Я пытаюсь реализовать модель KNN, используя Mahalanobis в качестве метрического расстояния c, однако, когда я выполняю код, я получаю сообщение об ошибке:
Значение Ошибка: "размер V не соответствует
, где V - ковариационная матрица объектов.
Соответствующие части моего кода ниже:
X_train, X_test, y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=10,stratify=y)
knn2=KNeighborsClassifier(n_neighbors=20, metric='mahalanobis', metric_params={'V': np.cov(X_train)})
knn2.fit(X_train,y_train) # this is the line that causes the error.
Я смотрел репо на github для расстояния sklearn metri c код (из строки 628 - Mahalanobis), и может видеть, что ошибка возникает из следующего:
cdef inline DTYPE_t rdist(self, DTYPE_t* x1, DTYPE_t* x2,
ITYPE_t size) nogil except -1:
if size != self.size:
with gil:
raise ValueError('Mahalanobis dist: size of V does not match')
Я выяснил, что self.size
в моем случае, но не могу понять, что такое size
.
Может ли кто-нибудь помочь с этой ошибкой?
Спасибо