百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

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

bigegpt 2024-09-29 09:21 3 浏览

一篇文章写清楚一个问题,关注我,自学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机器学习:如何划分训练集和测试集

相关推荐

有些人能留在你的心里,但不能留在你生活里。

有时候,你必须要明白,有些人能留在你的心里,但不能留在你生活里。Sometimes,youhavetorealize,Somepeoplecanstayinyourheart,...

Python学不会来打我(34)python函数爬取百度图片_附源码

随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...

软网推荐:图像变变变 一“软”见分晓

当我们仅需要改变一些图片的分辨率、裁减尺寸、添加水印、标注文本、更改图片颜色,或将一种图片转换为另一种格式时,总比较讨厌使用一些大型的图像处理软件,尤其是当尚未安装此类软件时,更是如此。实际上,只需一...

首款WP8.1图片搜索应用,搜照片得资料

首款WP8.1图片搜索应用,搜照片得资料出处:IT之家原创(天际)2014-11-1114:32:15评论WP之家报道,《反向图片搜索》(ReverseImageSearch)是Window...

分享一组美图(图片来自头条)(头条美女头像)

...

盗墓笔记电视剧精美海报 盗墓笔记电视剧全集高清种子下载

出身“老九门”世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,吴家为保护吴邪安全将他送去德国读书,因而吴邪对“考古”事业有着与生俱来的兴趣。在一次护宝过程中他偶然获得一张...

微软调整Win11 24H2装机策略:6月起36款预装应用改为完整版

IT之家7月16日消息,微软公司今天(7月16日)发布公告,表示自今年6月更新开始,已默认更新Windows1124H2和WindowsServer2025系统中预装...

谷歌手把手教你成为谣言终结者 | 域外

刺猬公社出品,必属原创,严禁转载。合作事宜,请联系微信号:yunlugongby贾宸琰编译、整理11月23日,由谷歌新闻实验室(GoogleNewsLab)联合Bellingcat、DigD...

NAS 部署网盘资源搜索神器:全网资源一键搜,免费看剧听歌超爽!

还在为找不到想看的电影、电视剧、音乐而烦恼?还在各个网盘之间来回切换,浪费大量时间?今天就教你如何在NAS上部署aipan-netdisk-search,一款强大的网盘资源搜索神器,让你全网资源...

使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建

前言回顾在上一篇文章《搭建持久化的INFINIConsole与Easysearch容器环境》中,我们详细介绍了如何使用基础的dockerrun命令,手动启动和配置INFINICon...

为庆祝杜特尔特到访,这个国家宣布全国放假?

(观察者网讯)近日,一篇流传甚广的脸书推文称,为庆祝杜特尔特去年访问印度,印度宣布全国放假,并举办了街头集会以示欢迎。菲媒对此做出澄清,这则消息其实是“假新闻”。据《菲律宾世界日报》2日报道,该贴子...

一课译词:毛骨悚然(毛骨悚然的意思是?)

PhotobyMoosePhotosfromPexels“毛骨悚然”,汉语成语,意思是毛发竖起,脊梁骨发冷;形容恐惧惊骇的样子(withone'shairstandingonend...

Bing Overtakes Google in China's PC Search Market, Fueled by AI and Microsoft Ecosystem

ScreenshotofBingChinahomepageTMTPOST--Inastunningturnintheglobalsearchenginerace,Mic...

找图不求人!6个以图搜图的识图网站推荐

【本文由小黑盒作者@crystalz于03月08日发布,转载请标明出处!】前言以图搜图,专业说法叫“反向图片搜索引擎”,是专门用来搜索相似图片、原始图片或图片来源的方法。常用来寻找现有图片的原始发布出...

浏览器功能和“油管”有什么关联?为什么要下载

现在有没有一款插件可以实现全部的功能,同时占用又小呢,主题主要是网站的一个外观,而且插件则主要是实现wordpress网站的一些功能,它不仅仅可以定制网站的外观,还可以实现很多插件的功能,搭载chro...