Я пытаюсь реализовать модель KNN, используя Mahalanobis в качестве метрики расстояния, однако, когда я выполняю код, я получаю сообщение об ошибке:
Ошибка значения: «размер 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 метрический код (из строки 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
.
Может ли кто-нибудь помочь с этой ошибкой?
Спасибо