模型调参与验证(网格搜索+交叉验证)02
一、代码示例
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.svm import SVC
from sklearn.datasets import load_digits
# 加载手写数字数据集(1797个8x8灰度图像)
digits = load_digits()
X, y = digits.data, digits.target
# 参数网格配置(测试不同正则化参数C和核函数)
param_grid = {
'C': [0.1, 1, 10], # 正则化参数(值越大正则化越弱)
'kernel': ['linear', 'rbf'] # 线性核与高斯核
}
# 网格搜索(5折交叉验证寻找最优参数组合)
svc = SVC()
grid = GridSearchCV(svc, param_grid, cv=5) # 参数搜索器
grid.fit(X, y) # 执行网格搜索
# 交叉验证评估(直接使用最优参数验证)
scores = cross_val_score(svc, X, y, cv=5) # 5折交叉验证
print(f"最佳参数: {grid.best_params_}") # 输出最优参数组合
print(f"交叉验证分数: {scores}") # 展示各折分数
print(f"平均准确率: {scores.mean():.4f} (±{scores.std():.4f})") # 计算均值与标准差
二、模型训练与评估结果概览
- 最佳参数:
{'C': 10, 'kernel': 'rbf'} - 交叉验证分数:
[0.96111111, 0.94444444, 0.98328691, 0.98885794, 0.93871866] - 平均准确率:
0.9633 (±0.0201) - 程序状态:
Process finished with exit code 0(正常结束)
三、总结
1. 模型核心流程
任务描述
- 目标:手写数字识别(0-9)
模型选择
- 算法:支持向量机(SVM)
关键实施步骤
数据准备
- 数据集:
load_digits() - 样本量:1797张 8x8 灰度图像
- 特征维度:64维
参数调优
- 方法:网格搜索(
GridSearchCV) - 调优参数:
C:正则化强度(候选值:0.1, 1, 10)kernel:核函数类型(候选值:'linear', 'rbf')
- 验证策略:5折交叉验证
- 最优参数组合:
C=10,kernel='rbf'
性能评估
- 评估方法:交叉验证
- 关键指标:
- 平均准确率:96.33%
- 标准差:±0.0201
- 评估结论:模型性能稳定且可靠
2. 核心收获
参数调优机制
- 正则化参数 C:
- 控制模型复杂度
- 值越大,模型越容易过拟合
- 核函数选择:
linear:适用于线性可分数据rbf(高斯核):适用于复杂非线性数据
- 网格搜索优势:
- 系统性穷举参数组合
- 避免人工试错的主观性
交叉验证价值
- 实施方式:5折数据分割
- 核心作用:
- 防止模型过拟合训练数据
- 更客观评估模型泛化能力
评估指标解析
- 平均准确率:反映模型整体预测性能
- 标准差:衡量模型性能稳定性(值越小越稳定)
3. 延伸方向
模型应用扩展
- 典型领域:
- 文本分类
- 图像检测
- 生物信息学
- 非线性处理:
- 结合高斯核实现高维空间映射
调优策略优化
- 高效搜索方法:
- 参数空间较大时采用随机搜索
- 使用贝叶斯优化降低计算成本
- 特征工程增强:
- 引入PCA降维技术
- 提升模型训练效率与性能
对比学习建议
- 算法对比:
- 与随机森林、神经网络等模型比较
- 理解不同算法的适用场景与优劣
- 深度分析工具:
- 混淆矩阵:分析各类别预测情况
- ROC曲线:评估模型分类阈值选择效果
总结:本案例系统展示了SVM模型从参数调优到性能评估的完整实施流程,建立了"模型选择-参数优化-效果验证"的方法论体系,为后续解决分类与回归问题提供了可复用的技术框架。
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/19489517

浙公网安备 33010602011771号