我正在尝试使用Python的sklearn库进行KNN算法的k倍交叉验证网格搜索,搜索参数包括邻居数量K和距离度量。我将马氏距离和seuclidean作为距离度量,并且理解它们具有需要指定的参数,即V或VI(特征的协方差矩阵或其逆矩阵)。
以下是我的代码:
以下是我的代码:
X_train, X_test, y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=10,stratify=y)
knn=KNeighborsClassifier()
grid_param={'n_neighbors':np.arange(1,51),'metric':['euclidean','minkowski','mahalanobis','seuclidean'],'metric_params':[{'V': np.cov(X_train)}]}
knn_gscv=GridSearchCV(knn,grid_param,cv=5)
knn_gscv.fit(X_train,y_train) (*)
执行该(*)行时会抛出以下错误:
TypeError: __init__() got an unexpected keyword argument 'V'
我也尝试过使用VI而不是V,但仍然遇到相同的错误。
我找到了下面的潜在解决方案,但它们并没有帮助。
https://github.com/scikit-learn/scikit-learn/issues/6915
非常感谢您的帮助!
这也是我的第一个问题,所以任何反馈都会对我有所帮助。