电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python實現二分類和多分類的ROC曲線教程

瀏覽:93日期:2022-07-21 10:50:41

基本概念

precision:預測為對的當中,原本為對的比例(越大越好,1為理想狀態)

recall:原本為對的當中,預測為對的比例(越大越好,1為理想狀態)

F-measure:F度量是對準確率和召回率做一個權衡(越大越好,1為理想狀態,此時precision為1,recall為1)

accuracy:預測對的(包括原本是對預測為對,原本是錯的預測為錯兩種情形)占整個的比例(越大越好,1為理想狀態)

fp rate:原本是錯的預測為對的比例(越小越好,0為理想狀態)

tp rate:原本是對的預測為對的比例(越大越好,1為理想狀態)

ROC曲線通常在Y軸上具有真陽性率,在X軸上具有假陽性率。這意味著圖的左上角是“理想”點 - 誤報率為零,真正的正率為1。這不太現實,但它確實意味著曲線下面積(AUC)通常更好。

二分類問題:ROC曲線

from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport timestart_time = time.time()import matplotlib.pyplot as pltfrom sklearn.metrics import roc_curvefrom sklearn.metrics import aucimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import recall_score,accuracy_scorefrom sklearn.metrics import precision_score,f1_scorefrom keras.optimizers import Adam,SGD,sgdfrom keras.models import load_modelprint(’讀取數據’)X_train = np.load(’x_train-rotate_2.npy’)Y_train = np.load(’y_train-rotate_2.npy’)print(X_train.shape)print(Y_train.shape)print(’獲取測試數據和驗證數據’)X_train, X_valid, Y_train, Y_valid = train_test_split(X_train, Y_train, test_size=0.1, random_state=666)Y_train = np.asarray(Y_train,np.uint8)Y_valid = np.asarray(Y_valid,np.uint8)X_valid = np.array(X_valid, np.float32) / 255.print(’獲取模型’)model = load_model(’./model/InceptionV3_model.h5’)opt = Adam(lr=1e-4)model.compile(optimizer=opt, loss=’binary_crossentropy’)print('Predicting')Y_pred = model.predict(X_valid)Y_pred = [np.argmax(y) for y in Y_pred] # 取出y中元素最大值所對應的索引Y_valid = [np.argmax(y) for y in Y_valid]# micro:多分類# weighted:不均衡數量的類來說,計算二分類metrics的平均# macro:計算二分類metrics的均值,為每個類給出相同權重的分值。precision = precision_score(Y_valid, Y_pred, average=’weighted’)recall = recall_score(Y_valid, Y_pred, average=’weighted’)f1_score = f1_score(Y_valid, Y_pred, average=’weighted’)accuracy_score = accuracy_score(Y_valid, Y_pred)print('Precision_score:',precision)print('Recall_score:',recall)print('F1_score:',f1_score)print('Accuracy_score:',accuracy_score)# 二分類 ROC曲線# roc_curve:真正率(True Positive Rate , TPR)或靈敏度(sensitivity)# 橫坐標:假正率(False Positive Rate , FPR)fpr, tpr, thresholds_keras = roc_curve(Y_valid, Y_pred)auc = auc(fpr, tpr)print('AUC : ', auc)plt.figure()plt.plot([0, 1], [0, 1], ’k--’)plt.plot(fpr, tpr, label=’Keras (area = {:.3f})’.format(auc))plt.xlabel(’False positive rate’)plt.ylabel(’True positive rate’)plt.title(’ROC curve’)plt.legend(loc=’best’)plt.savefig('../images/ROC/ROC_2分類.png')plt.show()print('--- %s seconds ---' % (time.time() - start_time))

ROC圖如下所示:

python實現二分類和多分類的ROC曲線教程

多分類問題:ROC曲線

ROC曲線通常用于二分類以研究分類器的輸出。為了將ROC曲線和ROC區域擴展到多類或多標簽分類,有必要對輸出進行二值化。⑴可以每個標簽繪制一條ROC曲線。⑵也可以通過將標簽指示符矩陣的每個元素視為二元預測(微平均)來繪制ROC曲線。⑶另一種用于多類別分類的評估方法是宏觀平均,它對每個標簽的分類給予相同的權重。

from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport timestart_time = time.time()import matplotlib.pyplot as pltfrom sklearn.metrics import roc_curvefrom sklearn.metrics import aucimport numpy as npfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import recall_score,accuracy_scorefrom sklearn.metrics import precision_score,f1_scorefrom keras.optimizers import Adam,SGD,sgdfrom keras.models import load_modelfrom itertools import cyclefrom scipy import interpfrom sklearn.preprocessing import label_binarizenb_classes = 5print(’讀取數據’)X_train = np.load(’x_train-resized_5.npy’)Y_train = np.load(’y_train-resized_5.npy’)print(X_train.shape)print(Y_train.shape)print(’獲取測試數據和驗證數據’)X_train, X_valid, Y_train, Y_valid = train_test_split(X_train, Y_train, test_size=0.1, random_state=666)Y_train = np.asarray(Y_train,np.uint8)Y_valid = np.asarray(Y_valid,np.uint8)X_valid = np.asarray(X_valid, np.float32) / 255.print(’獲取模型’)model = load_model(’./model/SE-InceptionV3_model.h5’)opt = Adam(lr=1e-4)model.compile(optimizer=opt, loss=’categorical_crossentropy’)print('Predicting')Y_pred = model.predict(X_valid)Y_pred = [np.argmax(y) for y in Y_pred] # 取出y中元素最大值所對應的索引Y_valid = [np.argmax(y) for y in Y_valid]# Binarize the outputY_valid = label_binarize(Y_valid, classes=[i for i in range(nb_classes)])Y_pred = label_binarize(Y_pred, classes=[i for i in range(nb_classes)])# micro:多分類# weighted:不均衡數量的類來說,計算二分類metrics的平均# macro:計算二分類metrics的均值,為每個類給出相同權重的分值。precision = precision_score(Y_valid, Y_pred, average=’micro’)recall = recall_score(Y_valid, Y_pred, average=’micro’)f1_score = f1_score(Y_valid, Y_pred, average=’micro’)accuracy_score = accuracy_score(Y_valid, Y_pred)print('Precision_score:',precision)print('Recall_score:',recall)print('F1_score:',f1_score)print('Accuracy_score:',accuracy_score)# roc_curve:真正率(True Positive Rate , TPR)或靈敏度(sensitivity)# 橫坐標:假正率(False Positive Rate , FPR)# Compute ROC curve and ROC area for each classfpr = dict()tpr = dict()roc_auc = dict()for i in range(nb_classes): fpr[i], tpr[i], _ = roc_curve(Y_valid[:, i], Y_pred[:, i]) roc_auc[i] = auc(fpr[i], tpr[i])# Compute micro-average ROC curve and ROC areafpr['micro'], tpr['micro'], _ = roc_curve(Y_valid.ravel(), Y_pred.ravel())roc_auc['micro'] = auc(fpr['micro'], tpr['micro'])# Compute macro-average ROC curve and ROC area# First aggregate all false positive ratesall_fpr = np.unique(np.concatenate([fpr[i] for i in range(nb_classes)]))# Then interpolate all ROC curves at this pointsmean_tpr = np.zeros_like(all_fpr)for i in range(nb_classes): mean_tpr += interp(all_fpr, fpr[i], tpr[i])# Finally average it and compute AUCmean_tpr /= nb_classesfpr['macro'] = all_fprtpr['macro'] = mean_tprroc_auc['macro'] = auc(fpr['macro'], tpr['macro'])# Plot all ROC curveslw = 2plt.figure()plt.plot(fpr['micro'], tpr['micro'], label=’micro-average ROC curve (area = {0:0.2f})’ ’’.format(roc_auc['micro']), color=’deeppink’, linestyle=’:’, linewidth=4)plt.plot(fpr['macro'], tpr['macro'], label=’macro-average ROC curve (area = {0:0.2f})’ ’’.format(roc_auc['macro']), color=’navy’, linestyle=’:’, linewidth=4)colors = cycle([’aqua’, ’darkorange’, ’cornflowerblue’])for i, color in zip(range(nb_classes), colors): plt.plot(fpr[i], tpr[i], color=color, lw=lw, label=’ROC curve of class {0} (area = {1:0.2f})’ ’’.format(i, roc_auc[i]))plt.plot([0, 1], [0, 1], ’k--’, lw=lw)plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel(’False Positive Rate’)plt.ylabel(’True Positive Rate’)plt.title(’Some extension of Receiver operating characteristic to multi-class’)plt.legend(loc='lower right')plt.savefig('../images/ROC/ROC_5分類.png')plt.show()print('--- %s seconds ---' % (time.time() - start_time))

ROC圖如下所示:

python實現二分類和多分類的ROC曲線教程

以上這篇python實現二分類和多分類的ROC曲線教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 塑料脸盆批发,塑料盆生产厂家,临沂塑料广告盆,临沂家用塑料盆-临沂市永顺塑业 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 识禅_对禅的了解,从这里开始 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 清水混凝土修复_混凝土色差修复剂_混凝土色差调整剂_清水混凝土色差修复_河南天工 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 硬齿面减速机[型号全],ZQ减速机-淄博久增机械 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 非甲烷总烃分析仪|环控百科 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 |