当前位置: 首页 > news >正文

Scikit-learn模型评估全流程解析:从数据划分到交叉验证优化

模型评估的步骤、scikit-learn函数及实例说明

1. 数据划分(Train-Test Split)
  • 函数train_test_split
  • 使用场景:将数据分为训练集和测试集,避免模型过拟合。
  • 作用:确保模型在未见过的数据上验证性能。
  • 示例
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
2. 模型训练与预测
  • 函数:模型类(如LogisticRegression)的.fit().predict()
  • 使用场景:在训练集上训练模型,并对测试集进行预测。
  • 作用:评估模型在未知数据上的表现。
  • 示例
    from sklearn.linear_model import LogisticRegression
    model = LogisticRegression()
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    
3. 评估指标计算
  • 函数accuracy_score, classification_report, confusion_matrix
  • 使用场景:量化模型性能,分析分类结果的详细指标(如精确率、召回率)。
  • 作用:全面评估模型的准确性和潜在缺陷(如类别偏差)。
  • 示例
    from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
    print("Accuracy:", accuracy_score(y_test, y_pred))
    print("Classification Report:\n", classification_report(y_test, y_pred))
    print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
    
4. 调参与交叉验证
  • 函数GridSearchCV
  • 使用场景:寻找最佳超参数组合,避免手动试错。
  • 作用:提高模型泛化能力,减少过拟合风险。
  • 示例
    from sklearn.model_selection import GridSearchCV
    param_grid = {'C': [0.1, 1, 10], 'penalty': ['l1', 'l2']}
    grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
    grid_search.fit(X_train, y_train)
    best_model = grid_search.best_estimator_
    
5. 交叉验证(Cross-Validation)
  • 函数cross_val_score
  • 使用场景:评估模型在不同数据子集上的稳定性。
  • 作用:减少数据划分的随机性对结果的影响。
  • 示例
    from sklearn.model_selection import cross_val_score
    scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
    print("Cross-Validation Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
    

完整评估实例(使用鸢尾花数据集)

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# 加载数据
iris = datasets.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(max_iter=200)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# 基础评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))

# 调参与交叉验证
param_grid = {'C': [0.1, 1, 10], 'penalty': ['l1', 'l2']}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("Best Parameters:", grid_search.best_params_)
print("Best Cross-Validation Score:", grid_search.best_score_)

# 交叉验证(整体数据)
cv_scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print("Overall Cross-Validation Accuracy:", np.mean(cv_scores))
输出示例
Accuracy: 0.9666666666666667
Classification Report:
              precision    recall  f1-score   support

           0       1.00      1.00      1.00         9
           1       1.00      0.93      0.96        15
           2       0.92      1.00      0.96        12

    accuracy                           0.97        36
   macro avg       0.97      0.98      0.97        36
weighted avg       0.97      0.97      0.97        36

Best Parameters: {'C': 1, 'penalty': 'l2'}
Best Cross-Validation Score: 0.9666666666666666
Overall Cross-Validation Accuracy: 0.9533333333333334

关键点总结

  1. 数据划分:避免模型在训练集上过拟合。
  2. 评估指标:结合准确率、分类报告和混淆矩阵,全面分析模型表现。
  3. 调参与交叉验证:通过网格搜索和交叉验证优化超参数,确保模型泛化能力。
  4. 完整流程:从数据划分到最终评估,形成闭环验证。

相关文章:

  • Java-模块二-2
  • 【MySQL】从零开始:掌握MySQL数据库的核心概念(三)
  • 音视频学习(三十):fmp4
  • 深入浅出JVM性能优化:从理论到实践
  • string kmp java
  • 高频SQL50题 第四天 | 1251. 平均售价、620. 有趣的电影、1075. 项目员工 I、1633. 各赛事的用户注册率
  • Ubuntu修改Swap交换空间大小
  • 2.创建Collection、添加索引、加载内存、预览和搜索数据
  • 【动态规划】按摩师
  • 蓝桥杯嵌入式备赛记录—CubeMX配置
  • 传统行业的思维惯性之困:评论列表
  • Linux系统中Crontab的用法详解
  • 深入理解 JVM 的垃圾收集器:CMS、G1、ZGC
  • 二叉树的学习
  • Altium Designer数模电学习笔记
  • 2025-03-23 吴恩达机器学习3——多维特征
  • Dubbo SPI 加载逻辑
  • GEO与AISEO的关系解析:核心差异与协同逻辑
  • WebLogic漏洞再现
  • 算法基础篇(1)(蓝桥杯常考点)
  • 上海博物馆展览进校园,“小先生”传递文物知识
  • 英国6月初将公布对华关系的审计报告,外交部:望英方树立正确政策导向
  • 商务部:中方敦促美方尽快停止232关税措施
  • 国防部:菲方应停止一切侵权挑衅危险举动,否则只会自食苦果
  • 在稳市场稳预期下,投资者教育给了散户更多底气
  • 孙卫东会见巴基斯坦驻华大使:支持巴印两国实现全面持久停火