而我想在kneighbors分类器中使用标准的欧几里德度量。在
knn = KNeighborsRegressor(n_neighbors=k,metric='seuclidean' )
knn.fit(newx,y)
显示的类型错误:
^{pr2}$我只需键入自己的函数来实现knn,如下所示:
import numpy as np
from sklearn.preprocessing import StandardScaler
x = np.random.randint(0,10,(10,2))
y = np.random.randint(0,10,(10,1))
testx = np.random.randint(0,10,(1,2))
sds = StandardScaler()
sds.fit(x)
sklean_newx = sds.transform(x)
sklearn_newtestx = sds.transform(testx)
distance = np.sqrt(((testx - newx) ** 2).sum(axis=1))
for k in range(1,8):
kn = distance.argsort()[:k]
print(y[kn].mean(), '%'*10, k)
SKLERN公司:
for k in range(1,8):
knn = KNeighborsRegressor(n_neighbors=k,metric='seuclidean' , metric_params={'V':x.std(axis=0)})
knn.fit(x ,y)
print(knn.predict(testx)[0], '%'*10, k)
以上两个结果不一致,为什么?在
seuclidean
距离度量需要V
参数来满足以下计算:如
sklearn
Distance Metrics文档中所定义。在可以使用
KNeighborsRegressor
初始化中的metric_params
参数传入V
(请参见KNR docs)。在相关问题 更多 >
编程相关推荐