मैंने कुछ शोध किया है। मैंने दो समन्वय प्रणालियों गैर मीट्रिक (WGS84) और मीट्रिक (पोलैंड 1992) में कुछ अंक लिए।
मैंने इस कोड का उपयोग किया है:
from scipy import loadtxt
from sklearn.cluster import Birch
import matplotlib.pyplot as plt
data84 = loadtxt("/home/damian/workspace/84.csv", delimiter=",")
data90 = loadtxt("/home/damian/workspace/90.csv", delimiter=",")
brc = Birch(threshold=0.5)
फिर मैंने मीट्रिक डेटा के साथ अपना मॉडल फिट किया:
brc.fit(data90)
और परिणामों की साजिश करें, जहां क्रॉस मेरे बिंदु थे और सर्कल मेरे उप-समूह थे:
c = brc.subcluster_centers_
plt.plot(data90[:,0], data90[:,1], '+')
plt.plot(c[:,0], c[:,1], 'o')
plt.show()
मेरे पास बस यही है:
आप देख सकते हैं, कि सीमा मूल्य बहुत छोटा था, क्योंकि यह प्रत्येक बिंदु में सबक्लेस्टर पाया।
दहलीज की परिभाषा:
एक नए नमूने को विलय करके प्राप्त की गई सबक्लस्टर की त्रिज्या और निकटतम सबक्लेस्टर सीमा से कम होना चाहिए। अन्यथा एक नई उपवर्ग शुरू किया जाता है।
तो इस मामले में हमें इस मूल्य को बढ़ाने की आवश्यकता है।
के लिये:
brc = Birch(threshold=5000)
यह बहुत बेहतर था:
और थ्रेसहोल्ड 0.5 के लिए WGS84 अंक:
brc = Birch(threshold=0.5)
brc.fit(data84)
केवल एक उपवर्ग, अच्छा नहीं। लेकिन इस मामले में हमें थ्रेशोल्ड वैल्यू घटनी चाहिए, इसलिए 0.05 के लिए:
brc = Birch(threshold=0.05)
brc.fit(data84)
हमें अच्छे परिणाम मिले हैं।
निष्कर्ष:
सीआरएस मायने रखता है। आपको एक उचित सीमा मूल्य खोजने की आवश्यकता है, आपके डेटा समन्वय प्रणाली और अंकों के बीच की दूरी पर निर्भर करता है। यदि आपके पास गैर मीट्रिक सीआरएस है, तो थ्रेशोल्ड मीट्रिक प्रणाली की तुलना में अपेक्षाकृत छोटा होना चाहिए। आपको मीटर और डिग्री के बीच का अंतर जानना होगा, अगर दो बिंदुओं के बीच की दूरी 10000m के बराबर है, तो यह WGS84 में 1 डिग्री से कम होगा। अधिक सटीक मानों के लिए Google की जाँच करें।
इसके अलावा n_clusters मान से अधिक अंक हैं। यह ठीक है, समूहों के सेंट्रोइड्स नहीं हैं, लेकिन उप-समूह हैं। यदि आप किसी चीज़ की भविष्यवाणी करने की कोशिश करते हैं, या लेबल प्रिंट करते हैं, तो यह आपकी बात को n_clusters क्षेत्रों में से एक में वर्गीकृत करेगा (या 0,1,2 पर वर्गीकृत अंक प्रिंट, ..., n_clusters लेबल)।
यदि आप विभिन्न मापदंडों को आजमाना नहीं चाहते हैं, तो आप हमेशा एक और एल्गोरिदम ले सकते हैं। क्लस्टरिंग के लिए बहुत सरल और सामान्य एल्गोरिथ्म K- साधन एल्गोरिथ्म है।
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
यह थ्रेसहोल्ड आदि की परवाह किए बिना आपके डेटा के लिए एन क्लस्टर्स ढूंढना चाहिए।