क्लस्टरिंग के डेटा आउटपुट की साजिश कैसे करें?


15

मैंने डेटा के एक सेट (अंकों का एक सेट) को क्लस्टर करने की कोशिश की और 2 क्लस्टर प्राप्त किए। मैं इसका रेखांकन करना चाहूंगा। प्रतिनिधित्व के बारे में थोड़ा उलझन है, क्योंकि मेरे पास (x, y) निर्देशांक नहीं है।

ऐसा करने के लिए MATLAB / पायथन फ़ंक्शन की भी तलाश कर रहे हैं।

संपादित करें

मुझे लगता है कि डेटा पोस्ट करने से प्रश्न स्पष्ट हो जाता है। मेरे पास दो क्लस्टर हैं जिन्हें मैंने पाइथन (स्केपी का उपयोग न करते हुए) में किमी के क्लस्टरिंग का उपयोग करके बनाया है। वो हैं

class 1: a=[3222403552.0, 3222493472.0, 3222491808.0, 3222489152.0, 3222413632.0, 
3222394528.0, 3222414976.0, 3222522768.0, 3222403552.0, 3222498896.0, 3222541408.0, 
3222403552.0, 3222402816.0, 3222588192.0, 3222403552.0, 3222410272.0, 3222394560.0, 
3222402704.0, 3222298192.0, 3222409264.0, 3222414688.0, 3222522512.0, 3222404096.0, 
3222486720.0, 3222403968.0, 3222486368.0, 3222376320.0, 3222522896.0, 3222403552.0, 
3222374480.0, 3222491648.0, 3222543024.0, 3222376848.0, 3222403552.0, 3222591616.0, 
3222376944.0, 3222325568.0, 3222488864.0, 3222548416.0, 3222424176.0, 3222415024.0, 
3222403552.0, 3222407504.0, 3222489584.0, 3222407872.0, 3222402736.0, 3222402032.0, 
3222410208.0, 3222414816.0, 3222523024.0, 3222552656.0, 3222487168.0, 3222403728.0, 
3222319440.0, 3222375840.0, 3222325136.0, 3222311568.0, 3222491984.0, 3222542032.0, 
3222539984.0, 3222522256.0, 3222588336.0, 3222316784.0, 3222488304.0, 3222351360.0, 
3222545536.0, 3222323728.0, 3222413824.0, 3222415120.0, 3222403552.0, 3222514624.0, 
3222408000.0, 3222413856.0, 3222408640.0, 3222377072.0, 3222324304.0, 3222524016.0, 
3222324000.0, 3222489808.0, 3222403552.0, 3223571920.0, 3222522384.0, 3222319712.0, 
3222374512.0, 3222375456.0, 3222489968.0, 3222492752.0, 3222413920.0, 3222394448.0, 
3222403552.0, 3222403552.0, 3222540576.0, 3222407408.0, 3222415072.0, 3222388272.0, 
3222549264.0, 3222325280.0, 3222548208.0, 3222298608.0, 3222413760.0, 3222409408.0, 
3222542528.0, 3222473296.0, 3222428384.0, 3222413696.0, 3222486224.0, 3222361280.0, 
3222522640.0, 3222492080.0, 3222472144.0, 3222376560.0, 3222378736.0, 3222364544.0, 
3222407776.0, 3222359872.0, 3222492928.0, 3222440496.0, 3222499408.0, 3222450272.0, 
3222351904.0, 3222352480.0, 3222413952.0, 3222556416.0, 3222410304.0, 3222399984.0, 
3222494736.0, 3222388288.0, 3222403552.0, 3222323824.0, 3222523616.0, 3222394656.0, 
3222404672.0, 3222405984.0, 3222490432.0, 3222407296.0, 3222394720.0, 3222596624.0, 
3222597520.0, 3222598048.0, 3222403552.0, 3222403552.0, 3222403552.0, 3222324448.0, 
3222408976.0, 3222448160.0, 3222366320.0, 3222489344.0, 3222403552.0, 3222494480.0, 
3222382032.0, 3222450432.0, 3222352000.0, 3222352528.0, 3222414032.0, 3222728448.0, 
3222299456.0, 3222400016.0, 3222495056.0, 3222388848.0, 3222403552.0, 3222487568.0, 
3222523744.0, 3222394624.0, 3222408112.0, 3222406496.0, 3222405616.0, 3222592160.0, 
3222549360.0, 3222438560.0, 3222597024.0, 3222597616.0, 3222598128.0, 3222403552.0, 
3222403552.0, 3222403552.0, 3222499056.0, 3222408512.0, 3222402064.0, 3222368992.0, 
3222511376.0, 3222414624.0, 3222554816.0, 3222494608.0, 3222449792.0, 3222351952.0, 
3222352272.0, 3222394736.0, 3222311856.0, 3222414288.0, 3222402448.0, 3222401056.0, 
3222413568.0, 3222298848.0, 3222297184.0, 3222488000.0, 3222490528.0, 3222394688.0, 
3222408224.0, 3222406672.0, 3222404896.0, 3222443120.0, 3222403552.0, 3222596400.0, 
3222597120.0, 3222597712.0, 3222400896.0, 3222403552.0, 3222403552.0, 3222403552.0, 
3222299200.0, 3222321296.0, 3222364176.0, 3222602208.0, 3222513040.0, 3222414656.0, 
3222564864.0, 3222407904.0, 3222449984.0, 3222352096.0, 3222352432.0, 3222452832.0, 
3222368560.0, 3222414368.0, 3222399376.0, 3222298352.0, 3222573152.0, 3222438080.0, 
3222409168.0, 3222523488.0, 3222394592.0, 3222405136.0, 3222490624.0, 3222406928.0, 
3222407104.0, 3222442464.0, 3222403552.0, 3222596512.0, 3222597216.0, 3222597968.0, 
3222438208.0, 3222403552.0, 3222403552.0, 3222403552.0]

class 2: b=[3498543128.0, 3498542920.0, 3498543252.0, 3498543752.0, 3498544872.0, 
3498544528.0, 3498543024.0, 3498542548.0, 3498542232.0]

मैं इसे प्लॉट करना चाहूंगा। मैं निम्नलिखित की कोशिश की और जब मैं साजिश निम्नलिखित परिणाम मिला aऔर b

pylab.plot(a,'x')
pylab.plot(b,'o')
pylab.show()

यहाँ छवि विवरण दर्ज करें

क्या मुझे क्लस्टरिंग का एक बेहतर दृश्य मिल सकता है?


1
यह वास्तव में इस बात पर निर्भर करता है कि आपने क्लस्टरिंग किया है :) यदि आप अपने पास मौजूद डेटा का एक छोटा सा उदाहरण दिखाते हैं, तो मुझे यकीन है कि आपको उत्तर मिल जाएगा
david w

1
विभिन्न रंगों और मार्करों का उपयोग करना सबसे सरल / पढ़ने में आसान है। यदि आपके पास 2 क्लस्टर हैं, तो आप विभिन्न मूल्यों के लिए 0/1 या O / X प्रिंट कर सकते हैं।
मार्सिन

कृपया बताएं कि "अंकों के समूह" से आपका क्या मतलब है। समूहों को चिह्नित करने के लिए आपके पास कितने चर हैं? इसके अलावा, क्या आप आश्वस्त हैं कि 2 समूहों का उपयोग करने के लिए सबसे अच्छी संख्या है? कई बार किसी को क्लस्टर विश्लेषण कार्यक्रमों का उपयोग करना होता है; शुरुआत में किसी को सिर्फ 2 मिल सकते हैं, लेकिन कुछ समायोजन के साथ एक अधिक दिलचस्प और जानकारीपूर्ण उच्च संख्या मिल सकती है।
rolando2

मैंने किमी का उपयोग किया जहां मुझे गुच्छों की संख्या को स्पष्ट रूप से देना है
user2721

@ user2721, क्या आप हमें दिखा सकते हैं कि आप किमी का उपयोग कैसे करते हैं?
सिगुर

जवाबों:


30

आम तौर पर आप मूल मान एक स्कैल्पलॉट (या स्कैल्पलॉट्स का एक मैट्रिक्स यदि आप उनमें से कई हैं) में प्लॉट करेंगे और अपने समूहों को दिखाने के लिए रंग का उपयोग करेंगे।

आपने अजगर से जवाब मांगा, और आप वास्तव में सभी झड़प और साजिश रचने, डराने और नखरे दिखाने के लिए करते हैं:

कुछ डेटा बनाकर शुरू करें

import numpy as np
from scipy import cluster
from matplotlib import pyplot

np.random.seed(123)
tests = np.reshape( np.random.uniform(0,100,60), (30,2) )
#tests[1:4]
#array([[ 22.68514536,  55.13147691],
#       [ 71.94689698,  42.31064601],
#       [ 98.07641984,  68.48297386]])

कितने क्लस्टर?

यह k- साधनों के बारे में कठिन बात है, और बहुत सारी विधियाँ हैं। आइए कोहनी विधि का उपयोग करें

#plot variance for each value for 'k' between 1,10
initial = [cluster.vq.kmeans(tests,i) for i in range(1,10)]
pyplot.plot([var for (cent,var) in initial])
pyplot.show()

कोहनी की साजिश

अपनी टिप्पणियों को कक्षाओं में असाइन करें, और उन्हें प्लॉट करें

मैं अनुक्रमणिका 3 (यानी 4 क्लस्टर) को किसी भी रूप में उतना ही अच्छा मानता हूं

cent, var = initial[3]
#use vq() to get as assignment for each obs.
assignment,cdist = cluster.vq.vq(tests,cent)
pyplot.scatter(tests[:,0], tests[:,1], c=assignment)
pyplot.show()

स्कैटर प्लॉट

बस उस जगह पर काम करें जहां आप जो कुछ भी पहले से कर चुके हैं उसे उस वर्कडफ़्लो में चिपका सकते हैं (और मुझे आशा है कि आप क्लस्टर यादृच्छिक लोगों के लिए थोड़े अच्छे हैं!)


आपका जवाब बहुत अच्छा लग रहा है। क्या मैं इसे अपने डेटा के लिए कुशलता से उपयोग कर सकता हूं। इसे आजमाने के लिए समय नहीं मिल सका।
user2721

@ डेविड वा: यह मेरे द्वारा देखे गए सबसे अच्छे उत्तरों में से एक है! एक स्टैंडअलोन उदाहरण पोस्ट करने के लिए बहुत-बहुत धन्यवाद। कम से कम, मुझे आपके उत्तर की समझ है :) एक बार फिर धन्यवाद!
लीजेंड

@ वाविद डब्ल्यू: मेरे पास एकमात्र प्रश्न कोहनी विधि है जो बढ़ते मूल्यों को दर्शाता है और आपका प्लॉट घटता हुआ दिखाता है। क्या यह इसलिए है क्योंकि आप विकृति मूल्यों का उपयोग सीधे किमी से कर रहे हैं? विकिपीडिया की कोहनी साजिश की तरह देखने के लिए मैं इसे कैसे बदल सकता हूं? और एक आखिरी सवाल के रूप में, क्या आपको पता होगा कि किमी के बजाय किमी 2 के लिए यह कैसे करना है?
लेजेंड

क्या आपने पहले प्लॉट को देखते हुए इंडेक्स ३ की खोज की है?
सिगुर

2

शायद फास्टमैप की तरह कुछ प्रयास करें कि उनके सापेक्ष दूरी का उपयोग करके अपने अंकों के सेट को साजिश रचें

(अभी भी) कुछ भी होशियार नहीं किया है फास्टैम्प को अजगर में स्ट्रिंग्स को प्लॉट करने के लिए लिखा है और आसानी से अद्यतन किया जा सकता है ताकि आप अपनी दूरी की मीट्रिक लिख सकें।

नीचे एक मानक यूक्लिडियन दूरी है जो मैं उपयोग करता हूं जो मापदंडों के रूप में विशेषताओं की दो सूची लेता है। यदि आपकी सूचियों का एक वर्ग मान है, तो इसका उपयोग दूरस्थ गणना में न करें।

def distance(vecone, vectwo, d=0.0):
    for i in range(len(vecone)):
        if isnumeric(vecone[i]):
            d = d + (vecone[i] - vectwo[i])**2
        elif vecone[i] is not vectwo[i]:
            d += 1.0
    return math.sqrt(d)

def isnumeric(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

0

मैं एक अजगर विशेषज्ञ नहीं हूं, लेकिन यह एक्स, वाई कुल्हाड़ियों पर एक दूसरे के खिलाफ 1 2 प्रमुख घटकों की साजिश रचने में बेहद मददगार है।

निश्चित नहीं है कि आप कौन से पैकेज का उपयोग कर रहे हैं, लेकिन यहां एक नमूना लिंक दिया गया है:

http://pyrorobotics.org/?page=PyroModuleAnalysis


मैं कोई सांख्यिकी विशेषज्ञ नहीं हूं। क्या आप प्लॉटिंग आइडिया के बारे में अधिक बता सकते हैं?
user2721

मूल विचार यह है कि कई चर एक दूसरे के साथ सहसंबद्ध होते हैं और सब कुछ केवल दो चर तक कम किया जा सकता है जो एक दूसरे से असंबद्ध होते हैं और डेटा में भिन्नता के "सबसे" समझाते हैं। आपको प्रमुख घटक विश्लेषण पर पढ़ने और एक पैकेज लागू करने की आवश्यकता है जो आपको इसे लागू करने की अनुमति देता है। en.wikipedia.org/wiki/Principal_component_analysis
राल्फ विंटर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.