ক্লাস্টারিংয়ের ডেটা আউটপুট কীভাবে প্লট করবেন?


15

আমি ডেটার একটি সেট (চিহ্নের একটি সেট) ক্লাস্টার করার চেষ্টা করেছি এবং 2 টি ক্লাস্টার পেয়েছি। আমি গ্রাফিক্যভাবে এটি উপস্থাপন করতে চাই। উপস্থাপনা সম্পর্কে বিট বিভ্রান্ত, যেহেতু আমার কাছে (x, y) স্থানাঙ্ক নেই।

এটি করার জন্য ম্যাটল্যাব / পাইথন ফাংশনটিও সন্ধান করুন।

সম্পাদনা

আমি মনে করি ডেটা পোস্ট করা প্রশ্নকে আরও পরিষ্কার করে দেয়। পাইথনে ক্লিস্টারিং (স্কিপি ব্যবহার করে না) ব্যবহার করে আমার কাছে দুটি ক্লাস্টার রয়েছে। তারা হয়

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
এটি সত্যিই আপনি ক্লাস্টারিংয়ের উপর নির্ভর করে :) আপনার যদি থাকা ডেটার সামান্য উদাহরণ দেখান তবে আমি নিশ্চিত যে আপনি একটি উত্তর পেয়ে যাবেন
ডেভিড ডব্লু

1
বিভিন্ন রঙ এবং মার্কার ব্যবহার করে পড়া সবচেয়ে সহজ / সহজ হতে পারে। আপনার সমস্ত কিছু যদি ২ টি ক্লাস্টার হয় তবে বিভিন্ন মানের জন্য আপনি কেবল 0/1 বা O / X মুদ্রণ করতে পারেন।
মার্সিন

"চিহ্নের সেট" দ্বারা আপনি কী বোঝাতে চান তা দয়া করে বলুন। গুচ্ছগুলিকে বৈশিষ্ট্যযুক্ত করার জন্য আপনার কতগুলি ভেরিয়েবল রয়েছে? এছাড়াও, আপনি কি নিশ্চিত যে 2 ব্যবহার করা সবচেয়ে ভাল ক্লাস্টার? বহুবার কাউকে ক্লাস্টার বিশ্লেষণ প্রোগ্রাম পুনরাবৃত্তভাবে ব্যবহার করতে হয়; শুরুতে একজন মাত্র 2 পেতে পারে তবে কিছু সামঞ্জস্যের সাথে আরও একটি আকর্ষণীয় এবং তথ্যমূলক উচ্চতর নম্বর পেতে পারে।
Rolando2

আমি কোমেন ব্যবহার করেছি যেখানে আমাকে ক্লাস্টারের সংখ্যা স্পষ্টভাবে দিতে হবে
ব্যবহারকারী 2721

@ ইউজার2721, আপনি কীভাবে কামিয়ান ব্যবহার করবেন তা আমাদের দেখাতে পারেন?
সিগুর

উত্তর:


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]])

কয়টি গুচ্ছ?

এটি কে-মানে সম্পর্কে কঠোর জিনিস, এবং প্রচুর পদ্ধতি রয়েছে। কনুই পদ্ধতিটি ব্যবহার করা যাক

#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()

বিক্ষিপ্ত প্লট

আপনি ইতিমধ্যে সেই ওয়ার্কফ্লোতে যা কিছু করেছেন তার মধ্যেই আপনি আটকে রাখতে পারেন (এবং আমি আশা করি আপনার ক্লাস্টারগুলি এলোমেলোগুলির চেয়ে কিছুটা সুন্দর!)


আপনার উত্তরটি দুর্দান্ত দেখাচ্ছে। আমি কি এটি আমার ডেটার জন্য দক্ষতার সাথে ব্যবহার করতে পারি? চেষ্টা করার জন্য সময় পাইনি।
ব্যবহারকারী 2721

@ ডেভিড ডাব্লু: এটি আমি দেখেছি সেরা উত্তরগুলির মধ্যে একটি! একটি স্বতন্ত্র উদাহরণ পোস্ট করার জন্য আপনাকে অনেক ধন্যবাদ। কমপক্ষে, আমি আপনার উত্তরের কর্কট বুঝতে পারি :) আবারও আপনাকে ধন্যবাদ!
কিংবদন্তি

@ ডেভিড ডাবলু: আমার কাছে একটাই প্রশ্ন ছিল কনুই পদ্ধতিটি ক্রমবর্ধমান মান দেখায় এবং আপনার প্লটটি হ্রাস পাচ্ছে shows আপনি কি সরাসরি কামেন থেকে বিকৃতি মান ব্যবহার করছেন বলে এটি কি? আমি কীভাবে এটি উইকিপিডিয়া কনুই প্লটের মতো দেখতে রূপান্তর করতে পারি? এবং একটি শেষ প্রশ্ন হিসাবে, আপনি কি জানবেন কীভাবে এটি kmeans এর পরিবর্তে kmeans2 এর জন্য করবেন?
কিংবদন্তি

আপনি কি সূচক 3 প্রথম প্লটটির সন্ধান করেছেন?
সিগুর

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


আমি কোনও পরিসংখ্যান বিশেষজ্ঞ নই। আপনি প্লটিং ধারণা সম্পর্কে আরও ব্যাখ্যা করতে পারেন?
ব্যবহারকারী 2721

মূল ধারণাটি হ'ল অনেকগুলি ভেরিয়েবল একে অপরের সাথে সম্পর্কযুক্ত এবং সবকিছুকে কেবলমাত্র দুটি ভেরিয়েবলের মধ্যে হ্রাস করা যেতে পারে যা একে অপরের সাথে সম্পর্কযুক্ত নয় এবং ডেটাতে পরিবর্তনের "বেশিরভাগ" ব্যাখ্যা করে। আপনাকে মূল উপাদান বিশ্লেষণ পড়তে হবে এবং এমন প্যাকেজ প্রয়োগ করতে হবে যা আপনাকে এটি প্রয়োগ করতে দেয়। en.wikedia.org/wiki/ প্রিন্সিপাল_কম্পোনেন্ট_অ্যানালাইসিস
রাল্ফ উইন্টারস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.