python数据分析与挖掘之聚类kmeans算法

聚类不指定类别进行分类

(划分(分裂)法,层次分析法、密度分析法)、网格法、模型法

    Kmeans算法属于分裂法

  1. 随机选择k各点作为聚类中心
  2. 计算各个点到这K个点的距离  
  3. 将对应的点聚到与它最近的这个聚类中心
  4. 重新计算聚类中心
  5. 比较当前聚类中心与前一次聚类中心,如果是同一个点,得到聚类结果,若不同的点,则重复2-5

Kmeans算法实现代码:

#kmeans算法
'''
#通过程序聚类实现实现录取学生的聚类
import pandas as pda
import numpy as npy
import matplotlib.pylab as pyl
fname='E:\\programCode\\huigui.csv'
dataf=pda.read_csv(fname)
x=dataf.iloc[:,1:4].as_matrix()
from sklearn.cluster import Birch
from sklearn.cluster import KMeans

kms=KMeans(n_clusters=4,n_jobs=2,max_iter=500)#聚为4类,线程数为2,最大循环次数500
y=kms.fit_predict(x)#进行聚类
#可视化
#x代表学生序号,y代表学生类别
s=npy.arange(0,len(y))
pyl.plot(s,y,'o')
pyl.show()
'''
#通过程序实现商品的聚类
import pandas as pda
import numpy as npy
import matplotlib.pylab as pyl
import pymysql
conn=pymysql.connect(host='localhost',user='root',passwd='123456',db='dd')
sql="select price,comment from jd limit 300"
dataf=pda.read_sql(sql,conn)
x=dataf.iloc[:,:].as_matrix()
from sklearn.cluster import KMeans

kms=KMeans(n_clusters=3)
y=kms.fit_predict(x)

for i in range(0,len(y)):
    if(y[i]==0):
        pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'*r')
    elif(y[i]==1):
        pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'sy')
    else:
        pyl.plot(dataf.iloc[i:i+1,0:1].as_matrix(),dataf.iloc[i:i+1,1:2].as_matrix(),'*k')    

pyl.show()

猜你喜欢

转载自blog.csdn.net/xx20cw/article/details/84888041