Keras 利用sklearn的ROC-AUC建立评价函数详解


Posted in Python onJune 15, 2020

我就废话不多说了,大家还是直接看代码吧!

# 利用sklearn自建评价函数
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score
from keras.callbacks import Callback

class RocAucEvaluation(Callback):
 def __init__(self, validation_data=(), interval=1):
 super(Callback, self).__init__()
 self.interval = interval
 self.x_val,self.y_val = validation_data
 def on_epoch_end(self, epoch, log={}):
 if epoch % self.interval == 0:
  y_pred = self.model.predict(self.x_val, verbose=0)
  score = roc_auc_score(self.y_val, y_pred)
  print('\n ROC_AUC - epoch:%d - score:%.6f \n' % (epoch+1, score))

x_train,y_train,x_label,y_label = train_test_split(train_feature, train_label, train_size=0.95, random_state=233)
RocAuc = RocAucEvaluation(validation_data=(y_train,y_label), interval=1)

hist = model.fit(x_train, x_label, batch_size=batch_size, epochs=epochs, validation_data=(y_train, y_label), callbacks=[RocAuc], verbose=2)

补充知识:keras用auc做metrics以及早停

我就废话不多说了,大家还是直接看代码吧!

import tensorflow as tf
from sklearn.metrics import roc_auc_score

def auroc(y_true, y_pred):
 return tf.py_func(roc_auc_score, (y_true, y_pred), tf.double)
# Build Model...
model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy', auroc])

完整例子:

def auc(y_true, y_pred):
 auc = tf.metrics.auc(y_true, y_pred)[1]
 K.get_session().run(tf.local_variables_initializer())
 return auc

def create_model_nn(in_dim,layer_size=200):
 model = Sequential()
 model.add(Dense(layer_size,input_dim=in_dim, kernel_initializer='normal'))
 model.add(BatchNormalization())
 model.add(Activation('relu'))
 model.add(Dropout(0.3))
 for i in range(2):
 model.add(Dense(layer_size))
 model.add(BatchNormalization())
 model.add(Activation('relu'))
 model.add(Dropout(0.3))
 model.add(Dense(1, activation='sigmoid'))
 adam = optimizers.Adam(lr=0.01)
 model.compile(optimizer=adam,loss='binary_crossentropy',metrics = [auc]) 
 return model
####cv train
folds = StratifiedKFold(n_splits=5, shuffle=False, random_state=15)
oof = np.zeros(len(df_train))
predictions = np.zeros(len(df_test))
for fold_, (trn_idx, val_idx) in enumerate(folds.split(df_train.values, target2.values)):
 print("fold n°{}".format(fold_))
 X_train = df_train.iloc[trn_idx][features]
 y_train = target2.iloc[trn_idx]
 X_valid = df_train.iloc[val_idx][features]
 y_valid = target2.iloc[val_idx]
 model_nn = create_model_nn(X_train.shape[1])
 callback = EarlyStopping(monitor="val_auc", patience=50, verbose=0, mode='max')
 history = model_nn.fit(X_train, y_train, validation_data = (X_valid ,y_valid),epochs=1000,batch_size=64,verbose=0,callbacks=[callback])
 print('\n Validation Max score : {}'.format(np.max(history.history['val_auc'])))
 predictions += model_nn.predict(df_test[features]).ravel()/folds.n_splits

以上这篇Keras 利用sklearn的ROC-AUC建立评价函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中创建和使用模版
Jul 15 Python
python爬取各类文档方法归类汇总
Mar 22 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Python并发之多进程的方法实例代码
Aug 15 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
Python版中国省市经纬度
Feb 11 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
Python如何在windows环境安装pip及rarfile
Jun 15 #Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 #Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 #Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 #Python
keras得到每层的系数方式
Jun 15 #Python
Python类及获取对象属性方法解析
Jun 15 #Python
在Keras中实现保存和加载权重及模型结构
Jun 15 #Python
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
投票管理程序
2006/10/09 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python每天必学之bytes字节
2016/01/28 Python
python学生管理系统学习笔记
2019/03/19 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
pymysql的简单封装代码实例
2020/01/08 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
sort命令的作用和用法
2013/08/25 面试题
网游商务专员求职信
2013/10/15 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
小鞋子观后感
2015/06/05 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书