机器学习:使用过拟合但在CV中表现良好的模型



我目前在体育博彩数据上训练一个KNeighborsClassifier模型,其结果通常是50/50。

我目前的训练数据集在训练时过拟合,但在使用交叉验证进行训练时平均精度得分为0.54。

接下来我可以采取什么步骤来确保模型不会过拟合?需要注意的是,我使用了整个训练数据集,只有3个特征。

params = {
'leaf_size': [10,15,20],
'n_jobs':[1,2,3],
'n_neighbors':[10,20,30],
}
gs_knn = RandomizedSearchCV(estimator=KNeighborsClassifier(),
param_distributions=params,
scoring='precision', cv=10, n_iter=100,
random_state=0)
gs_knn.fit(X_train, y_train)
gs_knn.best_estimator_

正如另一位用户建议的那样,调整k的值应该可以改善您的模型。

你可以执行网格搜索来找到最好的k值,使用如下所示:

#select your range
k_range = list(range(1, 31))
param_grid = dict(n_neighbors=k_range)
#define your gridsearch 
grid = GridSearchCV(knn, param_grid, cv=10, scoring='accuracy')
#fit it to your data
grid.fit(X, y)
#see your best k
grid.best_params_

最新更新