文章目录
- 前言
- K-Means 的工作原理总结
- 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)
参考资料:极客时间
解决方案:带疑问,多交流,勤动手,频思考