sklearn.metrics.classification_report分类模型评估

sklearn.metrics.classification_report()模型评估的一种,输出一个报告
sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False)

参数说明

  1. y_true:1 维数组,真实数据的分类标签
  2. y_pred:1 维数组,模型预测的分类标签
  3. labels:列表,需要评估的标签名称
  4. target_names:列表,指定标签名称
  5. sample_weight:1 维数组,不同数据点在评估结果中所占的权重
  6. digits:评估报告中小数点的保留位数,如果 output_dict=True,此参数不起作用,返回的数值不作处理
  7. 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        11
  versicolor       0.83      0.83      0.83         6
   virginica       0.92      0.92      0.92        13

    accuracy                           0.93        30
   macro avg       0.92      0.92      0.92        30
weighted avg       0.93      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}")

参考:https://www.cnblogs.com/jfdwd/p/11046694.html



原文地址:https://www.cnblogs.com/cgmcoding/p/13518979.html