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查看多台服务器进程的脚本分享
Jun 11 Python
Python的Django框架使用入门指引
Apr 15 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
python实现NB-IoT模块远程控制
Jun 20 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
Django 内置权限扩展案例详解
Mar 04 Python
python如何实现异步调用函数执行
Jul 08 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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设计模式 Facade(外观模式)
2011/06/26 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
python迭代器实例简析
2014/09/25 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
django最快程序开发流程详解
2019/07/19 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
2013年研究生毕业感言
2014/02/06 职场文书
运动会解说词200字
2014/02/06 职场文书
我的求职择业计划书
2014/04/04 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
党员年度个人总结
2015/02/14 职场文书
校园运动会广播稿
2015/08/19 职场文书
pandas数值排序的实现实例
2021/07/25 Python
如何优化vue打包文件过大
2022/04/13 Vue.js