如何在KNN中的minkowski指标中设置p <1?

时间:2019-02-24 17:48:10

标签: python machine-learning scikit-learn knn

当我尝试在KNN算法中将minkowski指标的p值定义为小于1时,im面临以下错误。 有谁能让我知道如何调整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:对于minkowski指标,p必须大于1

1 个答案:

答案 0 :(得分:2)

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

  

对于p≥1,由于Minkowski不等式,Minkowski距离是一个度量。当p <1时,(0,0)和(1,1)之间的距离为2^(1 / p) > 2,但是点(0,1)与这两个点的距离均为1。由于这违反了三角形不等式,因此对于p <1,它不是度量标准