1

如何在 cross_validate() python sklearn 中使用马氏距离?我收到错误,因为错误 - V 的大小不匹配。这是我的代码

model=neighbors.KNeighborsClassifier(n_neighbors=5,metric="mahalanobis",metric_params={'V': np.cov(X)})
results = cross_validate(estimator=model,X=X,y=y,cv=10,scoring=scoring)
4

1 回答 1

1

不幸的是,只有当 n_neighbors 大于或等于数据集大小的一半时,MahalanobisDistance 指标才有效。

以下应该运行:

from sklearn.model_selection import cross_validate
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import make_classification

N = 123
X, y = make_classification(n_samples=N)
scoring = "accuracy"
model = KNeighborsClassifier(n_neighbors=(N//2), 
                             metric="mahalanobis", 
                             metric_params={'V': np.cov(X)})
results = cross_validate(estimator=model,X=X,y=y,cv=10,scoring=scoring)

希望有比我更多知识的人能为我们俩提供更好的解决方案!

于 2020-03-06T21:09:08.740 回答