赞
踩
客户价值分析模型构建主要分成两个部分:
采用K-means聚类算法对客户数据进行客户分群,聚成5类(需要结合业务的理解与分析来确定客户类别数量)。
import pandas as pd from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['font.family']='sans-serif' #解决负号'-'显示为方块的问题 plt.rcParams['axes.unicode_minus'] = False file_path = 'C:\\Users\\yangyukuan\\Desktop\\z2.csv' cleaned_file = 'C:\\Users\\yangyukuan\\Desktop\\z3.csv' def main(): data = pd.read_csv(file_path,encoding='utf-8') #调用聚类算法 kmodel = KMeans(n_clusters = 5,n_jobs = 4) #n_jobs是并行数,一般等于CPU数较好 kmodel.fit(data) labels = data.columns #标签 k = 5 #数据个数 plot_data = kmodel.cluster_centers_ color = ['b', 'g', 'r', 'c', 'y'] #指定颜色 angles = np.linspace(0, 2*np.pi, k, endpoint=False) plot_data = np.concatenate((plot_data, plot_data[:,[0]]), axis=1) # 闭合 angles = np.concatenate((angles, [angles[0]])) # 闭合 fig = plt.figure() ax = fig.add_subplot(111, polar=True) #polar参数!! for i in range(len(plot_data)): ax.plot(angles, plot_data[i], 'o-', color = color[i], label = u'客户群'+str(i+1), linewidth=2)# 画线 ax.set_rgrids(np.arange(0.01, 3.5, 0.5), np.arange(-1, 2.5, 0.5), fontproperties="SimHei") ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei") plt.legend(loc = 4) plt.show() if __name__ == '__main__': main()
运行图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。