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 for Informatics 第11章 正则表达式(一)
Apr 21 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
python字典操作实例详解
Nov 16 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Python中包的用法及安装
Feb 11 Python
python随机模块random使用方法详解
Feb 14 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
浅谈Python爬虫原理与数据抓取
Jul 21 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 保留小数点
2009/04/21 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
jquery处理json对象
2014/11/03 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
Python with的用法
2014/08/22 Python
python实现矩阵乘法的方法
2015/06/28 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
python日志logging模块使用方法分析
2019/05/23 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
python实现简单井字棋游戏
2020/03/04 Python
Python多线程多进程实例对比解析
2020/03/12 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
新闻学专业求职信
2014/07/28 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书