Python 使用GridSearchCV进行超参数优化
我有一个K近邻分类器,你可以在下面看到。据我所知,GridSearchCV正在用1-20之间的不同k值测试模型。当我做y_pred=knn_grid_cv.predict(x_test)时,我得到了一组y预测,但是k值(1-20之间)是用来获得这些y预测的?这是GridSearchCV中得分最高的k值吗Python 使用GridSearchCV进行超参数优化,python,machine-learning,scikit-learn,grid-search,hyperparameters,Python,Machine Learning,Scikit Learn,Grid Search,Hyperparameters,我有一个K近邻分类器,你可以在下面看到。据我所知,GridSearchCV正在用1-20之间的不同k值测试模型。当我做y_pred=knn_grid_cv.predict(x_test)时,我得到了一组y预测,但是k值(1-20之间)是用来获得这些y预测的?这是GridSearchCV中得分最高的k值吗 x=football_df["Pace"].values.reshape(-1, 1) print(x) y=football_df["Position"
x=football_df["Pace"].values.reshape(-1, 1)
print(x)
y=football_df["Position"].values.reshape(-1, 1)
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.4,random_state=42)
param_grid={"n_neighbors":np.arange(1,20)}
knn = KNeighborsClassifier()
knn_grid_cv = GridSearchCV(knn, param_grid, cv=5)
knn_grid_cv.fit(x_train,y_train)
y_pred=knn_grid_cv.predict(x_test)
print(y_pred)
你说得对。您定义
param_grid
的方式将测试20个不同模型的性能,每个模型的n_邻居的值不同。选择最佳模型作为交叉验证平均得分最高的模型。对于KNeighborsClassifier
,使用的默认分数度量是平均准确度
在你的例子中,这将是所有五个分割中平均精度最高的模型
要查看选择的n_neights
的值,只需执行以下操作:
#选项1:打印最佳分类器的参数
打印(knn\u网格\u cv.best\u estimator\u.get\u params())
#选项2:打印所有模型组合的结果
作为pd进口熊猫
res=pd.数据帧(knn\u网格\u cv.cv\u结果)
打印(res)
谢谢你的澄清。奇怪的是,9被确定为最佳n_邻居。但是,当我在没有GridsearchCV且K=3的情况下单独使用KNN模型(相同的序列测试分割)时,我的y\U预测结果会更好,这可能是因为您在测试性能时没有交叉验证。这种情况也可能发生,因为在声明knn
或将数据拆分为训练集和测试集时,没有设置random_状态。基于邻居的模型的一个大问题是,它们非常依赖于训练数据,在从一个数据集切换到另一个数据集时,往往会发生剧烈的变化。@atyahoo请参见。我想知道它怎么会碰巧在这里问了几个问题,得到了几个答案,却一个也没接受。