百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python机器学习:分类问题学习模型的评价方法及代码实现

off999 2024-11-08 12:48 24 浏览 0 评论

一篇文章写清楚一个问题,关注我,自学python!

解决一个机器学习问题都是从问题建模开始,我们首先要收集问题资料,深入理解问题后将其抽象成机器可预测的问题。那么我们的学习模型表现究竟怎么样,该如何进行评估呢?今天就给大家写一写分类问题的评估方法。

评价指标介绍:

介绍指标之前先给大家介绍一下混淆矩阵confusion matrix

对于一个二分类问题,我们可以得到如图所示的的混淆矩阵

1.准确率(accuracy)

准确率表示模型在测试集中预测正确的样本(TP和TN)在所有测试样本(all data)中占的比例。

  注意:在数据集不平衡时,准确率将不能很好地表示模型的性能。可能会存在准确率很高,而少数类样本全分错的情况,此时应选择其它模型评价指标。


2、精确率(查准率)和召回率(查全率)

positive class的精确率(precision)计算公式如下:

positive class的召回率(recall)计算公式如下:

positive class的召回率只和真实为positive的样本相关,与真实为negative的样本无关;而精确率则受到两类样本的影响。请大家仔细理解这句话,理解好这句话才能真正理解为什么我们需要F1score。

3、F1score

F1 Score是precision和recall整合在一起的判定标准。

F1 Score的一般式子为

β是使用者自行定义的参数,由一般式可见F-score能同时考虑precision和recall这两种数值。分子为precision和recall相乘,根据这个式子,只要precision或recall趋近于0,F-score就会趋近于0,代表着这个算法的精确度非常低。一个好的算法,最好能够平衡recall和precision,且尽量让两种指标都很高。

当precision和recall的权重一样时有

F-score最理想的数值是趋近于1,做法是让precision和recall都有很高的值。若两者皆为1,则F-score也为1,代表该算法有着最佳的精确度。

4、ROC曲线

ROC曲线是受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线)

ROC曲线纵轴表示真正例率TPR,横轴表示假正例率FPR。

  • 纵轴:真实为正样本中预测是正样本的比例
  • 横轴:真实为负样本中预测是正样本的比例

ROC曲线的绘制过程是:给定数量正样本和负样本,按照预测为正样本的可能性排序,我们先假定阈值为最大,让所有的样本都预测为负样本,这样就可以使得TPR和FPR都为0,于是我们就得到点(0,0);然后让阈值依次取样本的预测值,若为真正例,则上移 ,若为假正例,则右移 ,这样得到的是一个类似阶梯的形状,连成平滑曲线即为ROC曲线。

ROC曲线的作用有2个:

  1. 当需要用ROC曲线来评判两个模型的好坏时,一般比较曲线下的面积AUC,AUC较大的表示性能较好。
  2. 对于同一个模型,ROC曲线可以帮助我们决定模型最佳阈值。

评价指标python实操

现在进行实操,首先,导入数据,训练模型:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
col = ["num_preg", "plasma_glucose_conc", "D_blood_pressure", "skin_fold_thickness", "serum_insulin", "body_mass_index", "pedigree_func", "age", "diabetes"]
diabetes_data = pd.read_csv("dataset/diabetes.txt", names = col)
X = diabetes_data.drop('diabetes', axis = 1)
y = diabetes_data.diabetes
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
from sklearn.neural_network import MLPClassifier
mlp = MLPClassifier(max_iter=1000)
mlp.fit(x_train, y_train)

解释一下上面的代码,首先读入了一个糖尿病数据库(请关注私信获取),然后对数据列进行命名,划分训练集和测试集后训练了一个多层感知机模型来预测一个病人是否患糖尿病,模型不作为本文重点,重点看模型评价方法。

准确率accuracy

在本例中就是正确预测的(所有将患糖尿病和不患糖尿病都正确预测的)测试样本数除以所有测试样本。

代码实现


from sklearn.metrics import accuracy_score
acc = accuracy_score(y_test, y_pred)
accRecall (Sensitivity)



精确率precision

在本例中就是在所有预测为患有糖尿病的测试样本中究竟有多少真的得病。

代码实现:

from sklearn.metrics import precision_score
precision_score(y_test, y_pred)



召回率Recall (Sensitivity)

在本例就是在所有真的有糖尿病的测试样本中模型预测出了多少为真。

代码实现:

from sklearn.metrics import recall_score
recall_score(y_test, y_pred)


特异度Specificity

在本例就是在所有真的没病的患者中模型能预测出有多少真正没病。

代码实现:

print("Specificity with recall pos label=0: ",recall_score(y_test, y_pred, pos_label=0))


特异度有点特殊,其实特异度就是预测为阴性时的召回率,所以可以用pos_label参数修改为阴性参数0就好。

F1 score

代码实现:

from sklearn.metrics import f1_score
print("F1 Score: ",f1_score(y_test, y_pred))


ROC曲线

代码如下:

from sklearn.metrics import plot_roc_curve
plot_roc_curve(mlp, x_test, y_test)
plt.show()


小结

今天给大家介绍了准确率、精确率(查准率)、召回率(查全率)、F1值、ROC曲线的意义和代码实现方法。感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的,加油。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

python机器学习:如何储存训练好的模型并重新调用

python机器学习:如何划分训练集和测试集

相关推荐

传奇盒子平台大全(传奇盒子赚钱)

在996传奇盒子中,会员玩家可以在“我的游戏”中通过“云玩”进入之前体验过的传奇游戏,开启挂机模式后,就能在“云多开”系统里观察到自己的云设备和正在进行云游戏状态的传奇游戏,如果点进手机后台,还能看到...

pdf查看软件(查看pdf格式的软件)

pdf当然可以有查找功能:1、第一步:首先我们要使用WPSOffice打开PDF文档。2、第二步:我们需要依次点击“开始”--->“查找”(或使用快捷键“Ctrl+F”)。3、第三步:我们在查...

中国象棋下载安装(下载中国象棋官方版)

不用刻意下载个中国象棋APP,只需要下载一个QQ游戏,里头就有中国象棋玩了,里头点开后,自动下载,还可以连接其他玩家,一起玩,切磋棋艺。你这问题太模糊了。。。是你有一个象棋游戏,想放到桌面上,双击就可...

手机bt下载软件哪个好(手机有什么下载bt的软件)

磁力下载app推荐黑科技APP,这个好用黑科下载器APP也是一款功能强大且使用的下载类工具应用,它支持磁力以及种子文件的下载。还可以把下载的的文件转存到云盘,并支持在线的云播预览功能,无需等待能直接边...

狂野飙车9下载(狂野飙车9下载入口)

您可以在AppStore搜索“狂野飙车9”或者直接使用Safari等浏览器搜索“狂野飙车9官方下载”,进入官网下载页面,点击下载按钮并根据提示进行下载安装即可。在下载前请确保您的苹果设备已连接稳定...

免费相册视频制作软件(怎么把拍的照片做成视频)
免费相册视频制作软件(怎么把拍的照片做成视频)

电脑端1.会声会影会声会影上手简单而且做出的相册的效果也很不错,很适合新手使用,x7以前的版本都是可以自己去免费用的。2.premiere(pr)pr是一款比较专业的视频剪辑制作软件,用它来做电子相册也是很不错的,做出的效果很高大上,如果只...

2026-01-17 21:43 off999

图片文字修改神器免费(手机无痕修改图片文字软件)

首先区分是完整图片导入还是ai软件自己编写的文字,如果导入的图片无法修改,只能像ps一样去修图,如果是软件编写的,无法选取先要解锁,方法:上面任务栏对象-选择全部解锁。然后修改。修改方法:如果对方编组...

开户最忌三个证券公司(随便哪个证券公司开户都一样吗)

在不同的证券公司开户,确实存在一些区别。首先,不同的证券公司提供的交易品种和交易费用可能不同,有些公司可能提供更广泛的投资选择,而有些公司则可能提供更低的佣金率,这直接影响到您的投资成本和收益。其次,...

农行手机银行app下载(中国农业银行App下载)

自己下载的农行手机银行是能转账的,只是额度可能会要低一些,比如一类卡,在农行网点注册下载并开通手机银行,一天转账的额度是有十万,而自己下载注册开通的手机银行额度则只有5万,自己是可以下载农行手机银行是...

下载本机手机管家(手机管家华为专用版下载)

可以在手机的应用商店中下载就可以了你看看有没有办法把他弄到桌面上,比如刷新桌面,如果影响使用的话,建议恢复出厂设置吧,我以前也出现过这种情况,刷机之后就好了电脑管家目前是不支持手机终端登录的所以无法...

街机游戏平台(街机游戏平台官网)
  • 街机游戏平台(街机游戏平台官网)
  • 街机游戏平台(街机游戏平台官网)
  • 街机游戏平台(街机游戏平台官网)
  • 街机游戏平台(街机游戏平台官网)
侠盗飞车下载(侠盗飞车下载手机版)
  • 侠盗飞车下载(侠盗飞车下载手机版)
  • 侠盗飞车下载(侠盗飞车下载手机版)
  • 侠盗飞车下载(侠盗飞车下载手机版)
  • 侠盗飞车下载(侠盗飞车下载手机版)
广州疫情最新消息(广州疫情最新消息通知)

 当然可以,深圳去广州的交通发达也便捷,可以乘坐大巴车、火车、高铁、自驾车均可到达广州的各大客运站、火车站、城市地标,到站后还可以乘坐公交车、地铁、打车到你想去的目的地。 深圳...

大型网络游戏排行榜前十(目前大型网络游戏排行)

最热门的有很多的,每个人的标准都不一样的,但是只要自己喜欢就好,无有传齐所有职业都有四个被动技能,游侠的四个技能分别是:游猎者、梦魇、鹰眼术和原动力。作用分别是对减速单位额外造成伤害,暴击是额外提高伤...

苹果15(苹果15pro)

1、屏幕机身方面:iPhone15配有黑色、白色、红色、绿色、蓝色五款颜色,配备6.1英寸超视网膜XDR显示屏,支持HDR显示、原彩显示、广色域(P3)、2000000:1对比度(典型)...

取消回复欢迎 发表评论: