交叉验证和网格搜索

交叉验证和网格搜索一般结合使用,用来解决超参的选择问题。超参指定就是算法模型中需要手动指定的参数,比如KNN算法中的n_neighbors。
网格搜索指的就是,预设几组超参组合,每组都是用交叉验证的方式进行评估,选择最优的超参组合建立模型。

交叉验证原理:

在这里插入图片描述

  • 将所有数据集分成5份。
  • 不重复地每次取其中1份做验证集,其他4份做训练集来训练模型,之后计算该模型在验证集上的MSE(均方误差)。
  • 将5次的MSE取平均得到最后的MSE。
  • 像上面这样分5次验证的方式,又称为5(K)折交叉验证。

代码使用

from sklearn.model_selection import GridSearchCV

kn = KNeighborsClassifier()
# 网格搜索
param = {'n_neighbors': [3, 5, 9, 11]}
gc = GridSearchCV(estimator=kn, param_grid=param, cv=5)
gc.fit(x_train, y_train)
y_predict = gc.predict(x_test)
print('测试集精确率:', gc.score(x_test, y_test))
print('最优超参为:', gc.best_params_)
print('最优模型为:', gc.best_estimator_)
print('最优评估为:', gc.best_score_)
print('每个超参每次交叉验证的结果:', gc.cv_results_)

estimator:指定模型实例。
param_grid:字典类型的超参列表。
cv:指定几折交叉验证。
fit:训练数据。
score:测试集准确率。
best_params_:最优超参。
best_estimator_:最优模型。
best_score_:最优评估分数。
cv_results_:每组超参每次交叉验证的结果。

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值