我有一个包含一些浮动列特征 (X_train) 和一个连续目标 (y_train) 的数据集。
我想在数据集上运行 KNN 回归,并且我想 (1) 进行网格搜索以进行超参数调整和 (2) 对训练进行交叉验证。
我写了这段代码:
from sklearn.model_selection import KFold
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.model_selection import RepeatedStratifiedKFold
X_train, X_test, y_train, y_test = train_test_split(scaled_df, target, test_size=0.2)
cv_method = RepeatedStratifiedKFold(n_splits=5,
n_repeats=3,
random_state=999)
# Define our candidate hyperparameters
hp_candidates = [{'n_neighbors': [2,3,4,5,6,7,8,9,10,11,12,13,14,15], 'weights': ['uniform','distance'],'p':[1,2,5]}]
# Search for best hyperparameters
grid = GridSearchCV(estimator=KNeighborsRegressor(),
param_grid=hp_candidates,
cv=cv_method,
verbose=1,
scoring='accuracy',
return_train_score=True)
grid.fit(X_train,y_train)
我得到的错误是:
Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.
我理解错误,我只能在分类中对 KNN 执行此方法,而不是回归。
但是我找不到的是如何编辑此代码以使其适用于 KNN 回归?有人可以向我解释如何做到这一点吗?
(所以最终的目标是我有一个数据集,我想调整参数,做交叉验证,并根据上面输出最好的模型并得到一些准确度分数,理想情况下分数在其他算法中具有可比性并且不是特定于 KNN,所以我可以比较准确度)。
还要提一下,这是我在 scikitlearn 中第一次尝试 KNN,所以欢迎所有评论/评论。
答案 0 :(得分:0)
是的,您可以将 GridSearchCV 与 KNeighboursRegressor 一起使用。
由于您有一个度量选择问题, 您可以在此处阅读指标文档:https://scikit-learn.org/stable/modules/model_evaluation.html
适用于回归问题的指标不同于分类问题,您可以在此处查看适用的回归指标列表:
‘explained_variance’
‘max_error’
‘neg_mean_absolute_error’
‘neg_mean_squared_error’
‘neg_root_mean_squared_error’
‘neg_mean_squared_log_error’
‘neg_median_absolute_error’
‘r2’
‘neg_mean_poisson_deviance’
‘neg_mean_gamma_deviance’
‘neg_mean_absolute_percentage_error’
所以你可以选择一个来代替“accuracy”并进行测试。