私はコサインメトリックでscikit-learnライブラリのDBSCANアルゴリズムを使用しようとしましたが、エラーが発生しました。 コードの行は、X
がcsr_matrix
あるPythonのコサインメトリックでのDBSCANエラー
db = DBSCAN(eps=1, min_samples=2, metric='cosine').fit(X)
あります。ドキュメントは、このメトリックを使用することが可能であることを述べているものの、
アルゴリズム「オート」の有効な
メトリック「コサイン」ではない:エラーは、次のようです。 オプション
algorithm='kd_tree'
と'ball_tree'
を使用しようとしましたが、同じことがありました。ただし、euclidean
、またはl1
のメトリックを使用するとエラーは発生しません。マトリックス
X
が大きいので、ペアワイズ距離の事前計算マトリックスを使用することはできません。私は
python 2.7.6
とscikit-learn 0.16.1
を使用します。 私のデータセットはゼロの完全な行を持たないので、余弦メトリックは明確に定義されています。
これは率直に言って、間違いなくsklearnのバグです。コサインの類似度はメトリックではありません。それは三角形の不等式に従わないので、KDTreeで動作しないし、無理やり強制することもできません。アルゴリズムが 'auto'に設定されたときに、それが使えないことを知っておくべき方法を使用しようとするのはなぜなのでしょうか。 –
@AdamAcosta:私が正しく理解していれば、あなたは 'brute''ではなく、試してみて、' 'ball_tree''を使用して失敗する「をalgorithm'キーワードauto''が ''使うべき」と主張していますか? (私は同意するでしょう) –