カスタムメトリックを持つK最近傍を使用する必要があります。私は私のオブジェクトのプロパティのために働く数式を持っています。それは私が行列を持っていることを意味します。この行列はベクトルで構成され、すべてのベクトルには数式で使用される3つのスカラー値が含まれます。K最近傍のカスタムメトリックの平均所得値は何ですか?
ライブラリsklearnのクラスKNeighborsClassifier
のカスタムメトリックを使用する方法を見つけました。これは単に文字列または呼び出し可能なmetricというパラメータを取るだけです。だから...私は関数を作成しましたが、この関数は2つの同じ配列に最初に10個のスカラー値を含みます。私はすべての配列が3つの値の代わりに10の値を含んでいることを意味します。その後の各関数では、関数は私の行列から値をとります。
私はコールスタックを見てきましたが、クラスBallTree
から呼び出された関数を見てきました。私はこの構造について読んだことがありますが、私のデータがどのように変わってきたのか、それが最初に私のメトリクスに渡すものを理解できません。
最初の同じ2つの配列は何を意味しますか?
私は
clf = KNeighborsClassifier(n_jobs=4, metric=custom_metric)
clf.fit(X, Y)
Xは、このような値が含まれ、このコードによって分類子をインスタンス化します。
array([[2.400154, 0.07744107744107744, 96.80566400000001],
[2.39325, 0.07744107744107744, 97.219544],
[2.395162, 0.07744107744107744, 97.10519599999999],
[3.101635, 0.009788768675940238, 65.88368],
[3.09882, 0.009788768675940238, 65.97364499999999],
[3.099576, 0.009788768675940238, 65.956018]], dtype=object)
custom_metric
が私の機能です。今は何も入っていません。
def custom_metric(x: np.ndarray, y: np.ndarray) -> float:
pass
x
の例とy
それらが同じである上に、私が書いている
array([ 0.02274535, 0.21161613, 0.41314247, 0.39046054, 0.1670481 ,
0.15515555, 0.13329802, 0.59103014, 0.26246693, 0.7727967 ])
。
私の英語が不明な場合は、
こんにちは!あなたのsklearn、numpy、scipyのバージョンを教えてもらえますか? – ANtlord
ナンシーはここでは関係ありません。 Sklearnは最新です(0.18) – lejlot
ああ!あなたはPython 2をお持ちですか?私はあなたのコードをテストしました。あなたが示したものを出力しますが、Python 3ではメトリック関数の戻り値についてエラーがあります。メトリックは浮動小数点値を返す必要があります。 – ANtlord