如何在上篇中评估二分类指标的评分标准?

2026-05-25 06:521阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计789个文字,预计阅读时间需要4分钟。

如何在上篇中评估二分类指标的评分标准?

精度可以作为度量模型好坏的一个指标,它表示预测的准确程度。在实践中,我们不仅对预测的准确性感兴趣,还希望将这些预测结果应用于更重要的决策过程中。

精度可以作为度量模型好坏的一个指标,它表示预测正确的样本数占所有样本数的比例。

但是在实践中,我们通常不仅对精确的预测感兴趣,还希望将这些预测结果用于更大的决策过程

1、 二分类指标

我们先看一下测量精度可能会怎么误导我们

1.1错误类型

⭐精度并不能很好地度量预测性能,因为我们所犯得错误并不包括我们感兴趣的所有信息:

例如:有一个自动化测试筛选癌症,如果测试结果为阴性,则认为该患者是健康的,若是阳性则需要进一步筛查。在这里我们将阳性测试结果称为正类,阴性结果称为负类,

于是就有了以下两种常见的错误类型

第一类错误:假正例(错误的阳性预测,可能导致额外费用)
第二类错误:假反例(错误的阴性预测,可能使得病人无法及早发现病情,造成严重后果)

1.2不平衡数据集

不平衡数据集:一个类别比另一个类别出现次数多很多的数据集

  • 精度无法帮助我们区分:不变的‘未点击’模型潜在的优秀模型

下面将用到:

  • 两个虚拟分类器:dummy_majority(始终预测多数类),dummy(产生随机输出)
  • 两个常用的分类模型:LogisticRegression,DecissionTree

创建数据集

#创建一个不平衡数据集 from sklearn.datasets import load_digits import numpy as np digits = load_digits() y = digits.target==9 print("类别:{}".format(np.bincount(y))) ''' `类别:[1617 180]` '''

建立四个模型

from sklearn.dummy import DummyClassifier from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier X_train,X_test,y_train,y_test = train_test_split(digits.data,y,random_state=0) #构建始终预测大多数的模型 #始终预测多数类 dummy_majority = DummyClassifier(strategy='most_frequent').fit(X_train,y_train) pred_most_frequent = dummy_majority.predict(X_test) print("始终预测多数类 Test score:{:.2f}".format(dummy_majority.score(X_test,y_test))) #产生随机输出 dummy = DummyClassifier().fit(X_train,y_train) pred_dummy = dummy.predict(X_test) print("产生随机输出 Test score:{:.2f}".format(dummy.score(X_test,y_test))) #决策树 tree = DecisionTreeClassifier(max_depth=2).fit(X_train,y_train) pred_tree = tree.predict(X_test) print("决策树 Test score:{:.2f}".format(tree.score(X_test,y_test))) #线性回归 lrg = LogisticRegression(C=0.1).fit(X_train,y_train) pred_logreg = lrg.predict(X_test) print("线性回归 Test score:{:.2f}".format(lrg.score(X_test,y_test))) ''' ``` 始终预测多数类 Test score:0.90 产生随机输出 Test score:0.82 决策树 Test score:0.92 线性回归 Test score:0.98 ``` '''

如何在上篇中评估二分类指标的评分标准?

本文共计789个文字,预计阅读时间需要4分钟。

如何在上篇中评估二分类指标的评分标准?

精度可以作为度量模型好坏的一个指标,它表示预测的准确程度。在实践中,我们不仅对预测的准确性感兴趣,还希望将这些预测结果应用于更重要的决策过程中。

精度可以作为度量模型好坏的一个指标,它表示预测正确的样本数占所有样本数的比例。

但是在实践中,我们通常不仅对精确的预测感兴趣,还希望将这些预测结果用于更大的决策过程

1、 二分类指标

我们先看一下测量精度可能会怎么误导我们

1.1错误类型

⭐精度并不能很好地度量预测性能,因为我们所犯得错误并不包括我们感兴趣的所有信息:

例如:有一个自动化测试筛选癌症,如果测试结果为阴性,则认为该患者是健康的,若是阳性则需要进一步筛查。在这里我们将阳性测试结果称为正类,阴性结果称为负类,

于是就有了以下两种常见的错误类型

第一类错误:假正例(错误的阳性预测,可能导致额外费用)
第二类错误:假反例(错误的阴性预测,可能使得病人无法及早发现病情,造成严重后果)

1.2不平衡数据集

不平衡数据集:一个类别比另一个类别出现次数多很多的数据集

  • 精度无法帮助我们区分:不变的‘未点击’模型潜在的优秀模型

下面将用到:

  • 两个虚拟分类器:dummy_majority(始终预测多数类),dummy(产生随机输出)
  • 两个常用的分类模型:LogisticRegression,DecissionTree

创建数据集

#创建一个不平衡数据集 from sklearn.datasets import load_digits import numpy as np digits = load_digits() y = digits.target==9 print("类别:{}".format(np.bincount(y))) ''' `类别:[1617 180]` '''

建立四个模型

from sklearn.dummy import DummyClassifier from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier X_train,X_test,y_train,y_test = train_test_split(digits.data,y,random_state=0) #构建始终预测大多数的模型 #始终预测多数类 dummy_majority = DummyClassifier(strategy='most_frequent').fit(X_train,y_train) pred_most_frequent = dummy_majority.predict(X_test) print("始终预测多数类 Test score:{:.2f}".format(dummy_majority.score(X_test,y_test))) #产生随机输出 dummy = DummyClassifier().fit(X_train,y_train) pred_dummy = dummy.predict(X_test) print("产生随机输出 Test score:{:.2f}".format(dummy.score(X_test,y_test))) #决策树 tree = DecisionTreeClassifier(max_depth=2).fit(X_train,y_train) pred_tree = tree.predict(X_test) print("决策树 Test score:{:.2f}".format(tree.score(X_test,y_test))) #线性回归 lrg = LogisticRegression(C=0.1).fit(X_train,y_train) pred_logreg = lrg.predict(X_test) print("线性回归 Test score:{:.2f}".format(lrg.score(X_test,y_test))) ''' ``` 始终预测多数类 Test score:0.90 产生随机输出 Test score:0.82 决策树 Test score:0.92 线性回归 Test score:0.98 ``` '''

如何在上篇中评估二分类指标的评分标准?