zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    转Oracle、MySql、SQLServer 数据分页查询
    转 DevExpress-ASPxPageControl 动态添加 TabPage 内容
    淘淘实惠多www.taohuiduo.com-专注独家折扣、1折特卖、9块9包邮、全场包邮
    "命名空间"system.web"中不存在类型或命名空间名称security"错误解决方法
    转摘 Eclipse智能提示及快捷键
    转(C#)Winform中MD5加密
    ComboBoxEdit数据绑定
    格式化日期和时间
    时间格式转换
    如何安装ESXi的补丁
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13518979.html
Copyright © 2011-2022 走看看