01 . 根据数据集testSet2. txt, 利用sklearn里的Kmeans算法完成聚类分类,并画出图形。
import numpy as np
from sklearn. cluster import KMeans
import matplotlib. pyplot as plt
dataSet= np. genfromtxt( 'testSet2.txt' )
plt. scatter( dataSet[ : , 0 ] , dataSet[ : , 1 ] , c= 'r' )
KM= KMeans( n_clusters= 4 )
KM. fit( dataSet)
centers= KM. cluster_centers_
print ( centers)
result= KM. predict( dataSet)
print ( '分簇结果:' , result)
mark= [ '^r' , 'sb' , '*g' , 'oy' ]
for i, d in enumerate ( dataSet) :
plt. plot( d[ 0 ] , d[ 1 ] , mark[ result[ i] ] )
markcentor= [ '+r' , '+b' , '+g' , '+y' ]
for i, centor in enumerate ( centers) :
plt. plot( centor[ 0 ] , centor[ 1 ] , markcentor[ i] , markersize= 30 )
plt. scatter( dataSet[ result== 0 , 0 ] , dataSet[ result== 0 , 1 ] , s= 30 , c= 'orange' ,
marker= 'o' , label= 'cluster=1' )
plt. scatter( dataSet[ result== 1 , 0 ] , dataSet[ result== 1 , 1 ] , s= 30 , c= 'green' ,
marker= 's' , label= 'cluster=2' )
plt. scatter( dataSet[ result== 2 , 0 ] , dataSet[ result== 2 , 1 ] , s= 30 , c= 'blue' ,
marker= 'o' , label= 'cluster=3' )
plt. scatter( dataSet[ result== 3 , 0 ] , dataSet[ result== 3 , 1 ] , s= 30 , c= 'red' ,
marker= '*' , label= 'cluster=4' )
plt. scatter( centers[ : , 0 ] , centers[ : , 1 ] , s= 500 , marker= "+" , c= 'red' , label= 'cluster center' )
plt. legend( loc= 'lower left' , bbox_to_anchor= ( - 0.4 , 0.5 , 0.1 , 0.1 ) )
plt. show( )