Я пытаюсь выполнить k-кратный поиск по сетке перекрестной проверки, используя алгоритм KNN, используя python sklearn, с параметрами в поиске, являющимися числом соседей K и расстоянием metri c. Я включаю махаланобис и суклидеан в качестве метрик расстояния, и понимаю, что у них есть параметр, который необходимо указать, а именно 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 __ () получил неожиданный аргумент ключевого слова 'V'
Я также попробовал VI вместо V, но получил ту же ошибку.
Я сталкивался с потенциальными решениями ниже, но они не помогают.
https://github.com/scikit-learn/scikit-learn/issues/6915
Scikit-learn: как определить параметр метрики расстояния для поиска в сетке
Любая помощь признателен!
Это также мой первый вопрос, поэтому любые отзывы будут полезны и в этом отношении.