2017-01-25 29 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) 

:私のトレーニングセットは次のようになりますパンダのデータフレームです。まず第一に、私は私のデータフレームから機能入力AとB行として見ることを期待するが、その代わりに私が取得:

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

第2の属性Bは明らかに私のトレーニングセットからの行ですが、私はどこ明確にすることはできません最初の行はどこから来たのですか?誰かが上記のアルゴリズムにカスタム距離関数を正しく挿入した例を説明したりポストしたりできれば非常に感謝しています。

ありがとうございます。

敬具、代わりに説明変数の使用の引数にmetric_paramsを使用してのKlemen

答えて

0

metric='pyfunc', func=customDistance

Sklearn kNN usage with a user defined metric

+0

まず第一に他の回答を確認してください、返事をありがとう。関数はスローされたエラーなしで実行されました。問題は、ベクトルの数値は整数である必要がありますが、丸められていることです。私はGitHubでこの類似の問題を発見しました https://github.com/scikit-learn/scikit-learn/issues/6287 しかし、私はなぜこれが発生しているのか分かりません最新の0.18.1 Sklearnビルドで。 –

関連する問題