• scikit-learn


    使用说明

    参数

    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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    Seafile开源私有云自定义首页Logo图片
    启动seafile报错Error happened during creating seafile admin.
    jupyter的安装和使用(python3版)
    C#学习资料
    服务编排-以docker-swarm为例讲解
    docker swarm架构图
    VMware中安装centos7
    js获取数据:类似xpath
    博客园备份python程序
    解决docker中jenkins运行磁盘满的问题
  • 原文地址:https://www.cnblogs.com/jfdwd/p/11046694.html
Copyright © 2020-2023  润新知