交叉验证——sklearn.model_selection.KFold

 

 

 

最近使用python进行数据集的划分。使用到了交叉验证(Cross-validation),需要整理sklearn.model_selection.KFold函数的参数设定和使用实例。整理如下:

 

1、Cross-validation 交叉验证 

附注:官方文档链接:https://scikit-learn.org/dev/modules/cross_validation.html#cross-validation

交叉验证的基本思想:把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练(可以使用不同的机器学习训练方法),得到相应模型(如模型A)。再利用验证集来测试模型(A)的泛化误差。另外,现实中数据总是有限的,为了对数据形成重用,从而提出k-折叠交叉验证。下图为网上传播较多的5折交叉验证图示。

5折交叉验证-图源网络

对回归问题或者分类问题,经过k折交叉验证之后,计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。Cross-validation能有效的避免过学习以及欠学习状态的发生,结果也比较具有说服性。

### 使用五交叉验证确定机器学习模型超参数 在使用五交叉验证来优化机器学习模型的超参数过程中,具体方法涉及几个重要环节: #### 创建参数网格 为了进行全面的搜索,需先定义待调整的各个超参数及其可能取值范围。例如,如果考虑的是支持向量机(SVM),那么可以设定不同的核函数类型、C值以及gamma值作为候选选项[^1]。 ```python from sklearn.model_selection import ParameterGrid param_grid = { 'kernel': ['linear', 'rbf'], 'C': [0.1, 1, 10], 'gamma': [0.001, 0.01, 0.1] } list(ParameterGrid(param_grid)) ``` #### 构建模型并应用K-Fold分割策略 选择合适的分类器或回归器之后,采用`KFold`对象指定叠数为5来进行数据划分操作。这一步骤确保每次迭代时都能获得独立测试样本用于性能估计[^2]。 ```python from sklearn.svm import SVC from sklearn.model_selection import KFold model = SVC() kf = KFold(n_splits=5, shuffle=True, random_state=42) ``` #### 执行网格搜索配合交叉验证 利用`GridSearchCV`类实现自动化遍历所有潜在配置,并自动完成多轮次的数据切分与评分计算工作。这里特别指定了cv参数等于之前建立好的kfold实例以适应特定需求——即执行五重循环过程中的每一轮都按照预定方式拆解原始资料集。 ```python from sklearn.model_selection import GridSearchCV grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=kf, scoring='accuracy', n_jobs=-1) X_train, y_train = ... # 假设这是已经准备好的特征矩阵和标签数组 grid_result = grid_search.fit(X_train, y_train) ``` #### 获取最优参数组合及相应得分 经过上述流程后,可以通过访问best_params_属性得到表现最好的一组设置;而best_score_则记录下了该条件下所达到的最佳平均精度或其他度量标准下的最高分数。 ```python print(f'Best Parameters: {grid_result.best_params_}') print(f'Highest Mean Accuracy: {grid_result.best_score_:.3f}') ``` 最后,基于选出的理想型参量再次拟合整个训练集合上的最终版本算法实例,以便后续部署到实际应用场景之中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值