机器学习分类算法常用评价指标
目录
1.准确率,召回率,精确率,F1-score,Fβ,ROC曲线,AUC值
2.宏平均(Macro-averaging)和微平均(Micro-averaging)
3.Python3 sklearn实现分类评价指标
1. 准确率,召回率,精确率,F1-score,Fβ,ROC曲线,AUC值
为了评价模型以及在不同研究者之间进行性能比较,需要统一的评价标准。根据数据挖掘理论的一般方法,评价模型预测能力最广泛使用的是二维混淆矩阵(Confusion matrix)(如下表所示)。
二维混淆矩阵
真实类别 |
预测结果 |
|
类别1(正例) |
类别2(反例) |
|
类别1(正例) |
真正例(True Positive) TP |
假反例(False Negatibe) FN |
类别2(反例) |
假正例(False Positive)FP |
真反例(True Negatibe) TN |
(1)准确率(Accuracy)表示正确分类的测试实例的个数占测试实例总数的比例,计算公式为:
(2)召回率(Recall),也叫查全率,表示正确分类的正例个数占实际正例个数的比例,计算公式为:
(3)精确率(Precision),也叫查准率,表示正确分类的正例个数占分类为正例的实例个数的比例,计算公式为:
(4)F1-score是基于召回率(Recall)与精确率(Precision)的调和平均,即将召回率和精确率综合起来评价,计算公式为:
(5) Fβ加权调和平均
Fβ是F1度量的一般形式,能让我们表达出对查准率、查全率的不同偏好,计算公式如下:
其中,β>0度量了查全率对查准率的相对重要性。β=1时退化为标准的F1;β>1时查全率有更大影响;β<1时查准率有更大影响。
(6)度量分类中的非均衡性的工具ROC曲线(ROC Curve)
TPR(True Positive Rate)表示在所有实际为阳性的样本中,被正确地判断为阳性的比率,即:TPR=TP/(TP+FN); FPR( False Positive Rate)表示在所有实际为阴性的样本中,被错误地判断为阳性的比率,即:FPR=FP/(FP+TN)。
ROC曲线是以FPR作为X轴,TPR作为Y轴。FPR越大表明预测正类中实际负类越多,TPR越大,预测正类中实际正类越多。ROC曲线如下图所示:
(7)AUC值(Area Unser the Curve)是ROC曲线下的面积,AUC值给出的是分类器的平均性能值。使用AUC值可以评估二分类问题分类效果的优劣,计算公式如下:
一个完美的分类器的AUC为1.0,而随机猜测的AUC为0.5,显然AUC值在0和1之间,并且数值越高,代表模型的性能越好。
2. 宏平均(Macro-averaging)和微平均(Micro-averaging)
在n个二分类混淆矩阵上综合考虑查准率和查全率时使用。
(1)宏平均(macro-ave)
先在各混淆矩阵上分别计算出查准率,查全率和F1,然后再计算平均值,这样就得到“宏查准率”(macro-P)、“宏查全率”(macro-R)、“宏F1”(macro-F1),计算公式分别如下:
(2)微平均(micro-ave)
先将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率”(micro-R)、“微F1”(micro-F1),计算公式分别如下:
3. Python3 sklearn实现分类评价指标
(1)KC4数据准备
(2)使用随机森林实现分类并输出评价指标
# -*- coding: utf-8 -*-import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
import matplotlib.pyplot as plt"""
函数说明:文件处理
Parameters:filename:数据文件
Returns:list_datasets:数据集特征列表category_labels:数据标签列表
"""
def data_handle(filename):read_data = pd.read_csv(filename)list_datasets = []category_labels = []for i in range(len(read_data)):list_data = []for j in range(len(read_data.iloc[i, :]) - 1):row_data = read_data.iloc[i, j] # 读取每个样本的每个数据list_data.append(row_data) #将每个数据存入列表list_datasets.append(list_data) #将每个样本的数据存入列表row_data_label = read_data.iloc[i, len(read_data.iloc[i, :]) - 1] # 读取每个样本的类别标签if row_data_label == 'N':category_labels.append(0) # 将二分类标签转化为0和1,0代表软件正常,1代表软件缺陷else:category_labels.append(1)return list_datasets, category_labels"""
函数说明:绘制ROC曲线
Parameters:labels:测试标签列表predict_prob:预测标签列表
"""
def plot_roc(labels, predict_prob):false_positive_rate, true_positive_rate, thresholds = metrics.roc_curve(labels, predict_prob)roc_auc = metrics.auc(false_positive_rate, true_positive_rate) #计算AUC值print('AUC=' + str(roc_auc))plt.title('PC5-ROC')plt.plot(false_positive_rate, true_positive_rate, 'b', label='AUC = %0.4f' % roc_auc)plt.legend(loc='lower right')plt.plot([0, 1], [0, 1], 'r--')plt.ylabel('TPR')plt.xlabel('FPR')# plt.savefig('figures/PC5.png') #将ROC图片进行保存plt.show()if __name__ == '__main__':datasets, labels = data_handle('MDP/KC4.csv') # 对数据集进行处理# 训练集和测试集划分X_train = datasets[:115]y_train = labels[:115]X_test = datasets[90:]y_test = labels[90:]# 随机森林分类器clf = RandomForestClassifier()clf = RandomForestClassifier(n_estimators=200, random_state=0)clf.fit(X_train, y_train) # 使用训练集对分类器训练y_predict = clf.predict(X_test) # 使用分类器对测试集进行预测print('准确率:', metrics.accuracy_score(y_test, y_predict)) #预测准确率输出print('宏平均精确率:',metrics.precision_score(y_test,y_predict,average='macro')) #预测宏平均精确率输出print('微平均精确率:', metrics.precision_score(y_test, y_predict, average='micro')) #预测微平均精确率输出print('宏平均召回率:',metrics.recall_score(y_test,y_predict,average='macro'))#预测宏平均召回率输出print('平均F1-score:',metrics.f1_score(y_test,y_predict,average='weighted'))#预测平均f1-score输出print('混淆矩阵输出:',metrics.confusion_matrix(y_test,y_predict))#混淆矩阵输出print('分类报告:', metrics.classification_report(y_test, y_predict))#分类报告输出plot_roc(y_test, y_predict) #绘制ROC曲线并求出AUC值
评价指标结果如下:
机器学习基础学习目录
1、机器学习入门总结
2、机器学习分类算法常用评价指标总结
3、决策树算法ID3算法
4、决策树算法熵与信息增益
5、K-近邻法(KNN算法)
6、机器学习中的特征工程
7、逻辑回归算法处理简单数据
8、SVM算法实现手写数字识别
机器学习项目实战
1、项目实战-KNN算法实现手写数字识别
2、项目实战-KNN算法改进约会网站的配对效果
3、项目实战-朴素贝叶斯算法实现垃圾邮件过滤
4、项目实战-朴素贝叶斯算法实现新闻分类
交流学习欢迎入群:955817470(群一),801295159(群二)
机器学习分类算法常用评价指标相关推荐
- 预测评价系统_「机器学习」一文读懂分类算法常用评价指标
前言 评价指标是针对将相同的数据,输入不同的算法模型,或者输入不同参数的同一种算法模型,而给出这个算法或者参数好坏的定量指标. 在模型评估过程中,往往需要使用多种不同的指标进行评估,在诸多的评价指标中 ...
- 机器学习——算法常用评价指标
机器学习--算法常用评价指标 一.常用评价指标 二.案例 一.常用评价指标 参考书籍:<机器学习>--周志华 错误率: 分类错误的样本数占样本总数的比例 精度: 分类正确的样本数占样本总数 ...
- 15分钟带你入门sklearn与机器学习——分类算法篇
作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...
- 来!一起捋一捋机器学习分类算法
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:算法与数学之美 可是,你能够如数家珍地说出所有常用的分类算法,以及他们的特征.优 ...
- [转载] python机器学习第三章:使用scikit-learn实现机器学习分类算法
参考链接: 使用Scikit-Learn在Python中进行embedding/投票分类 训练机器学习算法所涉及的五个主要步骤可以概述如下: 1.特征的选择 2.确定性能评价标准 3.选择分类器及其优 ...
- 主流监督式机器学习分类算法
主流监督式机器学习分类算法的性能比较 姓名:欧阳qq 学号:169559 摘要:机器学习是未来解决工程实践问题的一个重要思路.本文采比较了目前监督式学习中几种主流的分类算法(决策树.SVM.贝 ...
- 机器学习分类算法(附图文详解)
说起分类算法,相信学过机器学习的同学都能侃上一二. 可是,你能够如数家珍地说出所有常用的分类算法,以及他们的特征.优缺点吗?比如说,你可以快速地回答下面的问题么: KNN算法的优缺点是什么? Naiv ...
- 机器学习—分类算法的对比实验
文章目录 前言 一.分类算法实现 1.决策树 2.KNN 3.SVM 4.逻辑回归 5.朴素贝叶斯 6.随机森林 7.AdaBoost 8.GradientBoosting 二.分类算法的对比 前言 ...
- 大数据 机器学习 分类算法_13种用于数据科学的机器学习分类算法及其代码
大数据 机器学习 分类算法 The roundup of most common classification algorithms along with their python and r cod ...
最新文章
- hive处理json数据_(转)hive中解析json数组
- hive olap 数据仓库_数据仓库那些事儿
- String类(二)
- angular --- ngDialog关闭当前层
- java打印等边三角市,java 打印菱形和等边三角形
- pulsar 卸载数据到aws-s3
- SpringBoot与任务
- Android ListView 指定显示最后一行
- java你如何调字体大小_eclipse怎样调整代码字体大小 值得一看
- Java面向对象编程三大特征 - 继承
- java 向路由器发送报文_9.IP选路 - loda0128的个人空间 - OSCHINA - 中文开源技术交流社区...
- 如何在Mac上安全的下载BT
- c语言计算级数,C语言之数值计算--级数算法
- 从网易产品出发解读To B营销如何应用增长黑客
- 课代表:ChatGPT及大模型专题研讨会
- 2019最新微信公众平台PHP开发搭建与揭秘(附代码)
- 量化交易系统设计细节
- 【Katalon常见问题解决四】浏览器升级后,katalon报错 Unable to open browser with url: ''
- Java字符拼成图片
- 对残差网络resnet shortcut的解释