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实现指定字符串补全空格的方法
Apr 30 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
详解python中requirements.txt的一切
Mar 03 Python
Python2随机数列生成器简单实例
Sep 04 Python
python 动态加载的实现方法
Dec 22 Python
django进阶之cookie和session的使用示例
Aug 17 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
python实现126邮箱发送邮件
May 20 Python
Python pip 常用命令汇总
Oct 19 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 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
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
建筑总经理岗位职责
2014/02/02 职场文书
改革共识倡议书
2014/08/29 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL