Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用GridSearchCV进行超参数优化_Python_Machine Learning_Scikit Learn_Grid Search_Hyperparameters - Fatal编程技术网

Python 使用GridSearchCV进行超参数优化

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"

我有一个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"].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请参见。我想知道它怎么会碰巧在这里问了几个问题,得到了几个答案,却一个也没接受。