模型构建
客户价值分析模型构建主要分成两个部分:
- 根据航空公司客户数据据的5个指标数据,对客户进行聚类分群
- 结合业务对每个客户群进行特征分析,分析客户价值,并对每个客户群进行排名
客户聚类
采用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()
运行图: