keras用auc做metrics以及早停实例


Posted in Python onJuly 02, 2020

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

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可使用的评价函数

1:binary_accuracy(对二分类问题,计算在所有预测值上的平均正确率)

binary_accuracy(y_true, y_pred)

2:categorical_accuracy(对多分类问题,计算在所有预测值上的平均正确率)

categorical_accuracy(y_true, y_pred)

3:sparse_categorical_accuracy(与categorical_accuracy相同,在对稀疏的目标值预测时有用 )

sparse_categorical_accuracy(y_true, y_pred)

4:top_k_categorical_accuracy(计算top-k正确率,当预测值的前k个值中存在目标类别即认为预测正确 )

top_k_categorical_accuracy(y_true, y_pred, k=5)

5:sparse_top_k_categorical_accuracy(与top_k_categorical_accracy作用相同,但适用于稀疏情况)

sparse_top_k_categorical_accuracy(y_true, y_pred, k=5)

以上这篇keras用auc做metrics以及早停实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python生成url短链接的方法
May 04 Python
python对数组进行反转的方法
May 20 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Django 路由控制的实现
Jul 17 Python
使用python模拟命令行终端的示例
Aug 13 Python
Python 文件数据读写的具体实现
Jan 24 Python
详解Python 循环嵌套
Jul 09 Python
python中return不返回值的问题解析
Jul 22 Python
超级详细实用的pycharm常用快捷键
May 12 Python
python 如何做一个识别率百分百的OCR
May 29 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 #Python
Python装饰器结合递归原理解析
Jul 02 #Python
Python OpenCV读取中文路径图像的方法
Jul 02 #Python
keras.utils.to_categorical和one hot格式解析
Jul 02 #Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 #Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 #Python
Python使用OpenPyXL处理Excel表格
Jul 02 #Python
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python中set常用操作汇总
2016/06/30 Python
Python实现二分查找与bisect模块详解
2017/01/13 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
HEMA英国:荷兰原创设计
2018/08/28 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
应届生如何写自荐信
2014/01/05 职场文书
环保倡议书范文
2014/05/12 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
个人四风问题整改措施
2014/10/24 职场文书
党员进社区活动总结
2015/05/07 职场文书
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL