में कोसाइन मीट्रिक के साथ डीबीएससीएएन त्रुटि मैं कोसाइन मेट्रिक के साथ विज्ञान-सीखने वाली लाइब्रेरी से डीबीएससीएएन एल्गोरिदम का उपयोग करने की कोशिश कर रहा था लेकिन त्रुटि से फंस गया था। कोड की पंक्तिपाइथन
db = DBSCAN(eps=1, min_samples=2, metric='cosine').fit(X)
जहां X
एक csr_matrix
है।
मीट्रिक 'कोज्या' एल्गोरिथ्म 'ऑटो' के लिए मान्य नहीं,
हालांकि प्रलेखन कहना है कि यह इस मीट्रिक उपयोग करना संभव है: त्रुटि पीछा कर रहा है। मैंने विकल्प algorithm='kd_tree'
और 'ball_tree'
का उपयोग करने का प्रयास किया लेकिन उसे वही मिला। हालांकि, अगर मैं euclidean
का उपयोग करता हूं या कहता हूं, l1
मीट्रिक का उपयोग करने में कोई त्रुटि नहीं है।
मैट्रिक्स X
बड़ा है, इसलिए मैं जोड़ी दूरी के प्रीकंप्यूटेड मैट्रिक्स का उपयोग नहीं कर सकता।
मैं python 2.7.6
और scikit-learn 0.16.1
का उपयोग करता हूं। मेरे डेटासेट में शून्य की पूरी पंक्ति नहीं है, इसलिए कोसाइन मीट्रिक अच्छी तरह परिभाषित है।
यह तर्कसंगत रूप से sklearn में एक बग है, स्पष्ट रूप से। कोसाइन समानता एक मीट्रिक नहीं है। यह त्रिभुज असमानता का पालन नहीं करता है, यही कारण है कि यह केडीटी के साथ काम नहीं करेगा और आपके पास मजबूर करने के अलावा कोई विकल्प नहीं है। जिनमें से सभी सवाल उठाते हैं कि जब आप 'ऑटो' पर एल्गोरिदम सेट करते हैं, तो यह एक विधि का उपयोग करने का प्रयास करता है जिसे पता होना चाहिए कि इसका उपयोग नहीं किया जा सकता है। –
@AdamAcosta: अगर मैं सही ढंग से समझता हूं, तो आप बहस कर रहे हैं कि ''auto'' algorithm'-keyword का उपयोग 'ball_tree'' का उपयोग करके कोशिश करने और विफल होने के बजाय '' brute'' 'का उपयोग करना चाहिए? (मैं सहमत हूं।) –