scikit-learn - 分类模型的评估 (classification_report)
模型 分类 评估 report Learn scikit Classification
2023-09-27 14:23:28 时间
使用说明
参数
sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False)
y_true
:1 维数组,真实数据的分类标签y_pred
:1 维数组,模型预测的分类标签labels
:列表,需要评估的标签名称target_names
:列表,指定标签名称sample_weight
:1 维数组,不同数据点在评估结果中所占的权重digits
:评估报告中小数点的保留位数,如果output_dict=True
,此参数不起作用,返回的数值不作处理output_dict
:若真,评估结果以字典形式返回
返回
字符串或字典。
每个分类标签的精确度,召回率和 F1-score。
- 精确度:precision,正确预测为正的,占全部预测为正的比例,TP / (TP+FP)
- 召回率:recall,正确预测为正的,占全部实际为正的比例,TP / (TP+FN)
- F1-score:精确率和召回率的调和平均数,2 * precision*recall / (precision+recall)
同时还会给出总体的微平均值,宏平均值和加权平均值。
- 微平均值:micro average,所有数据结果的平均值
- 宏平均值:macro average,所有标签结果的平均值
- 加权平均值:weighted average,所有标签结果的加权平均值
在二分类场景中,正标签的召回率称为敏感度(sensitivity),负标签的召回率称为特异性(specificity)。
鸢尾花数据集的随机森林结果评估
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
# 鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# [0, 1, 2] 标签转换为名称 ['setosa' 'versicolor' 'virginica']
y_labels = iris.target_names[y]
# 数据集拆分为训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y_labels, test_size=0.2)
# 使用训练集训练模型
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
# 使用测试集预测结果
y_pred = clf.predict(X_test)
# 生成文本型分类报告
print(classification_report(y_test, y_pred))
"""
precision recall f1-score support
setosa 1.00 1.00 1.00 10
versicolor 0.83 1.00 0.91 10
virginica 1.00 0.80 0.89 10
micro avg 0.93 0.93 0.93 30
macro avg 0.94 0.93 0.93 30
weighted avg 0.94 0.93 0.93 30
"""
# 生成字典型分类报告
report = classification_report(y_test, y_pred, output_dict=True)
for key, value in report["setosa"].items():
print(f"{key:10s}:{value:10.2f}")
"""
precision : 1.00
recall : 1.00
f1-score : 1.00
support : 10.00
"""
Reference
作者:难道就靠讲究人情世故
链接:https://www.jianshu.com/p/2a5722d81591
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
相关文章
- huggingface预训练模型下载到本地如何使用和加载
- paddlepaddle CPU模型部署加速包 MKL-DNN
- PaddleHub2.0——使用动态图版预训练模型ERNIE实现文新闻本分类
- 李宏毅机器学习_分类_概率生成模型_4
- PaddleHub中的模型
- 容联七陌:ChatGPT大模型能力为智能客服带来新方向
- 机器学习笔记之线性分类——高斯判别分析(一)模型思路构建
- 数据挖掘与数据化运营实战. 3.2 目标客户的预测(响应、分类)模型
- 数据挖掘与数据化运营实战. 3.9 卖家(买家)交易模型
- bert文本分类模型保存为savedmodel方式
- 二分类模型精度高而召回率低的原因
- tensorflow 1.0 学习:用别人训练好的模型来进行图像分类
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- 【玩转数据系列十二】PAI平台深度学习Caffe框架实现图像分类的模型训练
- 使用Tensorflow搭建并训练TextCNN模型,对文本进行分类
- 使用 Python 和 TensorFlow 的图像分类基础知识之使用 CIFAR-10 数据集构建 CNN 模型
- powerdesigner中物理模型与sql脚本的以及与数据库的连接设置
- 《大数据分析原理与实践》一一2.1 大数据分析模型建立方法
- 《计算机网络:自顶向下方法(原书第6版)》一1.5 协议层次及其服务模型
- Cesium专栏-大量gltf三维模型加载
- U3DVR向量点乘与叉乘概念及几何模型公式应用
- 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型
- 转:瑞利信道,莱斯信道和高斯信道模型
- C++对象模型——Default Constructor的建构操作(第二章)
- Akka并发编程——第五节:Actor模型(四)
- Unity Shader 之 GL Mesh Shader 实现物体模型的线框效果(也适用于移动端)
- 模型容器Containers之nn.ModuleDict
- 使用朴素贝叶斯模型对邮件进行分类