K-Means 聚类算法分析客户群价值

本文探讨了K-Means算法在客户群价值分析中的应用,讲解了算法原理,包括距离度量(如欧几里得距离)和误差平方和(SSE)作为目标函数。此外,介绍了Scikit-Learn中KMeans算法的参数设置,如n_clusters、n_jobs等,以及评估聚类效果的方法。文章还提到了pandas和numpy在数据处理中的作用,如read_excel、concat、linspace和arange等方法,用于数据导入、组合和采样。最后,讨论了Python中其他类型的聚类算法,并强调了训练模型和预测过程的一致性。
摘要由CSDN通过智能技术生成

K-Means 算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预订的类树 K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度越大。

度量样本之间的相似性最常用的是 欧几里得距离、曼哈顿距离和闵可夫斯基距离;(Scikit-Learn 中的 KMeans 算法仅仅支持欧氏距离,因为采用其他的距离并不一定能够保证算法的收敛性。)

度量聚类质量的目标函数:误差平方和 SSE。对于两种不同的聚类结果,选择误差平方和较小的分类结果。

算法评价:组内相似性越大,组间差别越大,聚类效果越好

#使用 K-Means 算法聚类消费行为特征数据
import pandas as pd

#参数初始化
inputfile='../data/consumption_data.xls'
outputfile='../out/data_type.xls'

k=3  #聚类的类别
iteration=500  #聚类最大循环次数
data=pd.read_excel(inputfile,index_col='Id')
data_zs=1.0*(data-data.mean())/data.std()  #数据标准化,直接对每一列进行标准化计算,不需要单独提取每一列

from sklearn.cluster import KMeans
model=KMeans(n_clusters=k, n_jobs=4, max_iter=iteration)  #分为k类,并发数为4 
model.fit(data_zs)  #开始聚类

#简单打印结果
r1=pd.Series(model.labels_).value_counts()  #统计各个类别的数目
r2=pd.DataFrame(model.cluster_centers_)  #找出聚类中心
r=pd.concat([r2,r1],axis=1)  #横向连接(axis=0纵向连接),得到聚类中心对应的类别下的数目    连接 r1 和 r2
r.columns=list(data.columns)+[u'类别数目']  #重命名表头,data.columns是data的列标签
print(r)

#详细输出原始数据及其类别
r=pd.concat([data,pd.Series(model.labels_,index=data.index)],axis=1)  #详细输出每个样本对应的类别   连接中括号内的两项内容
r.columns=list(data.columns)+[u'聚类类别']  #重命名表头
r.to_excel(outputfile)  #保存结果
sklearn.cluster.KMeans   #KMeans 聚类

Parameters:

n_clusters: int, 可选项,default=8。要生成的聚类质量,以及要生成的聚类中心的数量。

n_jobs: int,用于计算的并行数量(并发数量)

             n_jobs=-1,If -1 all CPUs are used ,所有cpu 用于计算; 

              n_jobs=1,no parallel computing code is used at all, which is useful for debugging,没有并行计算几点,用于调试

max_iter: int, default=300。聚类最大循环次数(单次运行 K-Means 算法的最大迭代次数)

 

Attributes:

labels_: array, [n_clusters, n_features]。     Labels of each point 类别标签

cluster_centers_: Coordinates of cluster centers  聚类中心

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值