Sklearn KNeighborsRegressor自定义距离指标

时间:2017-01-25 23:33:03

标签: scikit-learn distance knn metric

我正在使用KNeighborsRegressor,但我想将它与自定义距离函数一起使用。我的训练集是pandas DataFrame,它看起来像:

week_day  hour  minute  temp  humidity
0         1     9       0     1      
1         1     9       0     1      
2         1     9       0     1      
3         1     9       0     1      
4         1     9       1     1     
  ...

def customDistance(a, b):
    print a, b
    return np.sum((a-b)**2)

dt = DistanceMetric.get_metric("pyfunc", func=customDistance)

knn_regression = KNeighborsRegressor(n_neighbors=15, metric='pyfunc', metric_params={"func": customDistance})
knn_regression.fit(trainSetFeatures, trainSetResults)

我也尝试直接从KNeighborsRegressor构造函数调用customDistance,如:

knn_regression = KNeighborsRegressor(n_neighbors=15, metric=customDistance)

两种方式函数都被执行但结果有点奇怪。首先,我希望看到我的DataFrame中的函数输入A和B行,而不是我得到的:

[0.87716989 11.46944914 1.00018801 1.10616031 1.] [ 1. 9. 0. 1. 1.]

第二个属性B显然是我的训练集中的一行,但我无法澄清第一行的来源?如果有人能够解释或发布正确插入自定义距离函数的例子,我们将非常感激。

提前致谢。

最好的问候,Klemen

0 个答案:

没有答案