机器学习 :模型评估

一、为什么要进行模型评估?

模型评估在机器学习和人工智能领域扮演着至关重要的角色。模型评估是确保机器学习模型在实际应用中有效、可靠且符合预期的关键步骤。它不仅帮助开发者理解和改进模型,还为最终用户提供了信心和保证。在模型开发的整个生命周期中,持续和全面的评估对于实现高质量的AI解决方案至关重要。

二、模型评估常用方法?

分类模型常用评估方法:

指标描述
Accuracy准确率
Precision精准度/查准率
Recall召回率/查全率
P-R曲线查准率为纵轴,查全率为横轴,作图
F1F1值
Confusion Matrix混淆矩阵
ROCROC曲线
AUCROC曲线下的面积

回归模型常用评估方法:

指标描述
Mean Square Error (MSE, RMSE)平均方差
Absolute Error (MAE, RAE)绝对误差
R-SquaredR平方值

三、 案例应用

以k-NN算法为例,当k取不同值时,分别绘制P-R曲线和ROC曲线,观察曲线变化,以下是具体的代码和结果实现:

(1)P-R曲线
 
  1. import numpy as np

  2. import matplotlib.pyplot as plt

  3. from sklearn.datasets import make_classification

  4. from sklearn.model_selection import train_test_split

  5. from sklearn.neighbors import KNeighborsClassifier

  6. from sklearn.metrics import precision_recall_curve, auc

  7. from sklearn.preprocessing import StandardScaler

  8. # 生成一些样本数据

  9. X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)

  10. # 数据标准化

  11. scaler = StandardScaler()

  12. X = scaler.fit_transform(X)

  13. # 划分训练集和测试集

  14. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

  15. # 不同k值下的PR曲线

  16. k_values = [1, 3, 5, 7, 9]

  17. plt.figure(figsize=(8, 6))

  18. for k in k_values:

  19. knn = KNeighborsClassifier(n_neighbors=k)

  20. knn.fit(X_train, y_train)

  21. y_score = knn.predict_proba(X_test)[:, 1]

  22. precision, recall, _ = precision_recall_curve(y_test, y_score)

  23. pr_auc = auc(recall, precision)

  24. plt.plot(recall, precision, label=f'k={k}, AUC={pr_auc:.2f}')

  25. plt.xlabel('Recall')

  26. plt.ylabel('Precision')

  27. plt.title('PR Curve for KNN with Different k Values')

  28. plt.legend()

  29. plt.show()

(2)ROC曲线 
 
  1. import numpy as np

  2. import matplotlib.pyplot as plt

  3. from sklearn.datasets import make_classification

  4. from sklearn.model_selection import train_test_split

  5. from sklearn.neighbors import KNeighborsClassifier

  6. from sklearn.metrics import roc_curve, auc

  7. from sklearn.preprocessing import StandardScaler

  8. # 生成一些样本数据

  9. X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)

  10. # 数据标准化

  11. scaler = StandardScaler()

  12. X = scaler.fit_transform(X)

  13. # 划分训练集和测试集

  14. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

  15. # 不同k值下的ROC曲线

  16. k_values = [1, 3, 5, 7, 9]

  17. plt.figure(figsize=(8, 6))

  18. for k in k_values:

  19. knn = KNeighborsClassifier(n_neighbors=k)

  20. knn.fit(X_train, y_train)

  21. y_score = knn.predict_proba(X_test)[:, 1]

  22. fpr, tpr, _ = roc_curve(y_test, y_score)

  23. roc_auc = auc(fpr, tpr)

  24. plt.plot(fpr, tpr, label=f'k={k}, AUC={roc_auc:.2f}')

  25. plt.plot([0, 1], [0, 1], linestyle='--', color='grey', label='Random Guess')

  26. plt.xlabel('False Positive Rate')

  27. plt.ylabel('True Positive Rate')

  28. plt.title('ROC Curve for KNN with Different k Values')

  29. plt.legend()

  30. plt.show()

    四、实验总结

    通过模型评估,我们可以确定模型的准确性、泛化能力和稳定性,以及是否存在过拟合或欠拟合等问题,常用的评估指标包括准确率、精确率、召回率等。另外,对于不同类型的问题,还可以采用不同的评估方法,如P-R曲线、ROC曲线、混淆矩阵等。综上所述,模型评估在机器学习中是至关重要的,可以帮助我们提高模型的性能和效果。

                                                                                           

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值