python - 如何在 KNN 中的 minkowski 度量中设置 p < 1?

标签 python machine-learning scikit-learn knn

当我尝试在 KNN 算法中为 minkowski 度量定义 p 值小于 1 时,我面临以下错误。 谁能告诉我如何将 minkowski 指标的 p 值调整为小于 1

sc=StandardScaler()
p_kn =Pipeline([('sc',sc),('kn',KNeighborsClassifier())])
grid_kn={'kn__n_neighbors':np.arange(3,30),'kn__weights':['uniform','distance'],'kn__p':[1,2,0.5]}
KN=GridSearchCV(p_kn,grid_kn,'accuracy',cv=cv)
KN.fit(x,y)

低于错误

ValueError: p must be greater than one for minkowski metric

最佳答案

你不能,仅仅因为 p < 1 Minkowski 距离不是一个度量,因此它对于任何基于距离的分类器(例如 kNN)没有用处;来自Wikipedia :

For p ≥ 1, the Minkowski distance is a metric as a result of the Minkowski inequality. When p < 1, the distance between (0,0) and (1,1) is 2^(1 / p) > 2, but the point (0,1) is at a distance 1 from both of these points. Since this violates the triangle inequality, for p < 1 it is not a metric.

关于python - 如何在 KNN 中的 minkowski 度量中设置 p < 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854740/

相关文章:

python - 获取和存储用户实时位置的最佳解决方案?

javascript - Django 和 ReactJS 没有呈现模板

python - 通过向数据集中添加更多图像来重新训练深度学习

python - 在 matplotlib 中显示一条线,以便我的结果与我的教科书相匹配

scikit-learn - 了解 scikit learn 中的铰链损失

python - PySerial 和微 Controller

python - PostgreSQL UUID 日期类型

matlab - svmtrain 在训练后返回单个浮点值而不是结构体

python - 尽管一切似乎都正常,神经网络却给出了错误的预测

python - 使用 sklearn 进行空间数据聚类