机器学习_如何给客户做聚类K-Means


前言

在工作中遇见咱们给客户做下聚类,划分下客群,这里分成3类(也可根据需求分成6类)。根据现有的字段,将数值分成层级(已处理好的数据),如:总资产排名、消费金额排名、贷款金额排名、薪资金额排名、购买理财金额排名等等。

K-Means 的工作原理总结

  • 选取 K 个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;
  • 将每个点分配到最近的类中心点,这样就形成了 K 个类,然后重新计算每个类的中心点;
  • 重复第二步,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。

K-Means的实战

这里数据处理进行省略,毕竟重点是做聚类,这里详略得当,具体数据处理,可以参考如下文章:
用Pandas读取CSV文件,做复杂数据处理(进阶版)
从Spark.sql读取到Lightgbm模型存储
Python综合数据分析_RFM用户分组模型
Python综合数据分析_RFM用户分层模型
Python综合数据分析_根据订单求RFM值
Python综合数据分析_美国大选

from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
import numpy as np
# 输入数据
data = pd.read_csv('data.csv', encoding='gbk')

train_x = data[["总资产排名","消费金额排名","贷款金额排名","薪资金额排名","购买理财金额排名"]]
df = pd.DataFrame(train_x)
kmeans = KMeans(n_clusters=3)

# 规范化到[0,1]空间
min_max_scaler=preprocessing.MinMaxScaler()
train_x=min_max_scaler.fit_transform(train_x)

# kmeans算法
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)

# 合并聚类结果,插入到原数据中
predict_y = pd.DataFrame(predict_y)
frames = [data, predict_y]
result = pd.concat(frames, axis=1)
result.rename({0:u'聚类'},axis=1,inplace=True)

# 查看分类分布
result['聚类'].value_counts()
#result.rename({'聚类': 'clusters_result'}, axis=1, inplace=True)
print(result)

参考资料:极客时间


解决方案:带疑问,多交流,勤动手,频思考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值