当我尝试在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
答案 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,它不是度量标准。