Scikit-learn kütüphanesinden DBSCAN algoritmasını kosinüs metriğiyle kullanmaya çalışıyordum ama hatayla sıkışmıştım. kod hattı X
bir csr_matrix
olanPython'da kosinüs metriği ile DBSCAN hatası
db = DBSCAN(eps=1, min_samples=2, metric='cosine').fit(X)
olup. dokümantasyon metrik kullanmak mümkün olduğunu söylüyor olsa da,
algoritmanın auto'dan için geçerli
Metrik 'kosinüs' değil: hata şudur. Opsiyon
algorithm='kd_tree'
ve'ball_tree'
'u kullanmayı denedim ama aynısını yaptım. Ancak,euclidean
veyal1
metriği kullanırsam hata olmaz.
X
matrisi büyüktür, bu nedenle önceden hesaplanmış bir çift geçişli matris kullanamıyorum.
python 2.7.6
vescikit-learn 0.16.1
kullanıyorum. Veri kümem tam bir sıfıra sahip değil, bu nedenle kosinüs metriği iyi tanımlanmış.
Bu, açıkçası, sklearn'deki bir hatadır. Kosinüs benzerliği bir metrik değildir. Üçgen eşitsizliğine uymuyor, bu yüzden bir KDTree ile çalışmayacak ve seçim yapmak zorunda değilsiniz. Bunların hepsi, algoritmayı 'otomatik' olarak ayarladığınızda neden kullanamayacağını bilmesi gereken bir yöntemi kullanmaya çalışmaktadır. –
@AdamAcosta: Doğru bir şekilde anlarsam, '' auto''' algoritmasının '' ball_tree'' kullanmayı denemek yerine '' brute'' kullanması gerektiğini düşünüyor musunuz? (Katılıyorum.) –