一、准备工作
1.Pycharm5.0.4
2.Python2.7
3.MySQLdb
4.pandas
5.sklearn
二、编程实现
这里不介绍什么是k-means和RFM,只是简单的利用Python实现。
1.连接数据库
conn = MySQLdb.connect( host = "localhost", port = 3306, user = "root", passwd = "", db = "rfm", charset = 'utf8' )2.利用pandas读取数据
data = pd.read_sql(" select vip_id,count(vip_id) as F,sum(sum_sal_amt) as M,datediff
('20101212',max(prd_sdate))as R from result where prd_sdate between 20090101
and 20101212 group by vip_id",index_col="vip_id",con=conn) #读取数据3.均值规范化
data_zs = 1.0*(data-data.mean())/data.std()
4.使用sklearn的Kmeans聚类
k=3 #聚类的类别 iteration = 500 #聚类最大循环次数
model = KMeans(n_clusters=k,n_jobs=4,max_iter=iteration)#分为K类,并发数4 model.fit_transform(data_zs)5.统计结果并打印
r1 = pd.Series(model.labels_).value_counts()#统计各个类别的数目 r2 = pd.DataFrame(model.cluster_centers_)#找出聚类中心 r = pd.concat([r2,r1],axis=1)#得到聚类中心对应的类别下的数目
r.cloumns = list(data.columns) r.columns = list(data.columns)+[u'类别数目'] print r
r = pd.concat([data,pd.Series(model.labels_,index=data.index)],axis=1)#输出每个会员对应的类别 r.columns = list(data.columns)+[u'类别数目'] r.to_excel("D:\data\data_type.xls")三、参考资料
1.《Python数据分析与挖掘实战》