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

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  聚类中心

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-means聚类算法是一种常用的无监督学习算法,可以将数据集中的样本根据其相似性进行分组。在客户分群中,K-means可以帮助我们将客户按照一定的特征进行聚类,从而对客户群体进行细分和定位。 首先,我们需要确定聚类的特征,如客户的年龄、性别、收入等。然后,选择合适的K值(聚类的簇数),这个可以通过试验和评估确定。 接下来,将客户的特征数据输入到K-means算法中。K-means的过程分为以下几个步骤: 1. 随机选择K个中心点作为初始聚类中心。这些中心点可以是数据集中的随机样本或者手动选择的。 2. 分别计算每个样本与K个中心点的距离,并将样本归类到距离最近的中心点所代表的簇。 3. 根据归类结果,更新每个簇的中心点坐标,计算所有样本到新的中心点的距离。 4. 重复步骤2和3,直到簇的中心点不再偏移或达到预定的迭代次数。 最后,得到聚类结果后,我们可以根据每个簇的特征分析和比较,对客户群体进行更加细致的定位和市场策略制定。例如,对于某个簇,如果发现其年龄较大、收入较高,可以将其定位为高端客户群体,针对其提供更高价值的产品和服务。 需要注意的是,K-means算法对于离群点较为敏感,因此在使用时需要对异常值进行处理。此外,K-means只能用于数值型特征,如果有其他类型的特征(如文本、类别),需要进行适当的转换才能使用该算法。 综上所述,K-means聚类算法通过对客户的特征进行分群,为企业提供了客户细分和定位的重要工具,在市场营销和定价策略方面具有广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值