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完成博客数据库的迁移方法
Jan 05 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
python 穷举指定长度的密码例子
Apr 02 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
Django框架请求生命周期实现原理
Nov 13 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python+Appium新手教程
Apr 17 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
php fckeditor 调用的函数
2009/06/21 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php生成QRcode实例
2014/09/22 PHP
php防止用户重复提交表单
2015/11/02 PHP
jQuery 获取URL参数的插件
2010/03/04 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
详解JS数值Number类型
2018/02/07 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
利用python获得时间的实例说明
2013/03/25 Python
python实现对一个完整url进行分割的方法
2015/04/29 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
人事专员的岗位职责
2014/03/01 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
员工工作及收入证明
2014/10/28 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
少年雷锋观后感
2015/06/10 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers