2017-01-25 1 views
1

KNeighborsRegressor를 사용하고 있습니다. 맞춤 거리 함수와 함께 사용하고 싶습니다.Sklearn KNeighborsRegressor 맞춤 거리 메트릭

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

두 가지 기능을 실행하지만 결과는 좀 이상해됩니다 : 나는 또한 같은 KNeighborsRegressor 생성자에서 직접 customDistance를 호출 시도

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) 

: 내 훈련 세트처럼 보이는 팬더 DataFrame입니다. 우선, 내 DataFrame에서 함수를 입력 A와 B 행으로보고 기대하는 대신 그 중 내가 얻을 :

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

두 번째 속성 B는 분명 내 훈련 집합에서 행,하지만 어디서 명확 수 없습니다 첫 번째 행이 왔습니까? 누군가가 언급 된 알고리즘에 맞춤 거리 함수를 올바르게 삽입 한 예를 설명하거나 게시 할 수 있다면 매우 높이 평가할 수 있습니다.

미리 감사드립니다.

안부, Klemen 대신 회귀 사용의 인수에 metric_params를 사용

답변

0

:

metric='pyfunc', func=customDistance

모두의 Sklearn kNN usage with a user defined metric

+0

처음에 다른 답변을 확인 함은 답장을 보내 주셔서 감사합니다 . 함수는 throw 된 오류없이 실행되었지만 벡터의 숫자는 정수 여야하지만 반올림됩니다. GitHub에서 이와 비슷한 문제가 발견되었습니다. https://github.com/scikit-learn/scikit-learn/issues/6287 이 문제가 발생했는지 모르겠으므로 패치를하고 문제를 해결해야합니다. 최신 0.18.1 Sklearn 빌드. –

관련 문제