分类模型评估

分类模型评估是在机器学习中⽤于衡量分类模型性能的⼀种重要⽅法。评估分类模 型的性能有助于理解模型对于不同类别的预测表现,为模型选择、调整和⽐较提供 依据。以下是分类模型评估的⼀些常⻅⽤途:

1. 模型选择和调整: 在建⽴机器学习模型时,存在多种算法和模型参数的选择。 通过使⽤不同的评估指标,如准确率、精确率、召回率、F1 分数等,可以帮助 选择最适合任务的模型,并调整模型参数以提⾼性能。

2. ⽐较不同模型: 当有多个模型可供选择时,通过对它们的性能进⾏⽐较,可以 确定哪个模型更适合解决特定问题。不同的评估指标提供了对模型在不同⽅⾯ 性能的不同视⻆。

3. 发现模型的局限性: 模型在某些情况下可能表现得很好,但在其他情况下可能 效果差。通过深⼊了解模型的性能,可以识别模型在哪些类别或情境下性能较 差,从⽽进⾏改进。

4. 调整类别权重: 当不同类别的样本数量不平衡时,例如正类别样本远远少于负 类别样本,通过调整类别权重或使⽤合适的评估指标(如召回率)可以更好地 适应不平衡数据。

5. 制定业务决策: 在⼀些应⽤中,对于不同类别的错误可能具有不同的代价。通 过了解混淆矩阵和相关指标,可以为业务决策提供⽀持,例如在医学诊断中避 免漏诊。

6. 提⾼模型解释性: 分类模型的评估结果可以帮助解释模型的预测,了解模型在 不同情况下的表现,以及哪些特征对于模型的决策起到关键作⽤。

 常⻅的分类模型评估指标包括准确率(Accuracy)、精确率(Precision)、召回 率(Recall)、F1 分数、ROC 曲线和AUC-ROC 等。选择哪些指标取决于具体问 题的要求和关注点。

混淆矩阵

混淆矩阵(Confusion Matrix)是在分类问题中⽤于评估模型性能的⼀种表格。 它展示了模型在不同类别上的分类结果,包括真正例(True Positive,TP)、假 正例(False Positive,FP)、真负例(True Negative,TN)和假负例(False Negative,FN)。混淆矩阵的每⼀列代表模型预测的类别,每⼀⾏代表实际的类 别。

  • True Positive (TP): 正类别实例被正确地预测为正类别。
  • False Positive (FP): 负类别实例被错误地预测为正类别。
  • True Negative (TN): 负类别实例被正确地预测为负类别。
  • False Negative (FN): 正类别实例被错误地预测为负类别。
from sklearn.metrics import precision_score, recall_score, f1_score, confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# 加载 Iris 数据集
iris = load_iris()
X, y = iris.data, iris.target
# 将数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 在训练集上训练模型
model.fit(X_train, y_train)
# 在测试集上进⾏预测
y_pred = model.predict(X_test)
# 计算混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(conf_matrix)

运行结果

Confusion Matrix:
[[10  0  0]
 [ 0  9  0]
 [ 0  0 11]]

我们换一个数据集

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt 
import warnings

warnings.filterwarnings('ignore')
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 15
plt.rcParams['axes.unicode_minus'] = False
# 加载数据集 
cancer = datasets.load_breast_cancer()
cancer

运行结果

{'data': array([[1.799e+01, 1.038e+01, 1.228e+02, ..., 2.654e-01, 4.601e-01,
         1.189e-01],
        [2.057e+01, 1.777e+01, 1.329e+02, ..., 1.860e-01, 2.750e-01,
         8.902e-02],
        [1.969e+01, 2.125e+01, 1.300e+02, ..., 2.430e-01, 3.613e-01,
         8.758e-02],
        ...,
        [1.660e+01, 2.808e+01, 1.083e+02, ..., 1.418e-01, 2.218e-01,
         7.820e-02],
        [2.060e+01, 2.933e+01, 1.401e+02, ..., 2.650e-01, 4.087e-01,
         1.240e-01],
        [7.760e+00, 2.454e+01, 4.792e+01, ..., 0.000e+00, 2.871e-01,
         7.039e-02]]),
 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,

0, 0, 1, 0, 1, 1, 1, 1,

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值