赞
踩
理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。
打开spyder,输入以下代码
- import pandas as pd
- import numpy as np
- from sklearn.metrics import silhouette_score
- from sklearn.decomposition import PCA
- from sklearn.cluster import KMeans,AgglomerativeClustering
- from sklearn.preprocessing import StandardScaler
- import matplotlib.pyplot as plt
- import datetime
- plt.rcParams['font.sans-serif']=['SimHei'] #中文正常显示
- plt.rcParams['axes.unicode_minus']=False #让负号正常显示
https:staticfile.eduplus.netldataSetsystemLiblc3b5c0f37fe24797808613bc713d5585.rar。压缩包中的数据为csv数据,解压并将该数据移动到c:/数据分析/data目录中
读取并查看数据
取出SUM_YR_1和SUM_YR_2不为空的样本
去除掉第一年、第二年票价均为0,同时平均折扣系数大于零和飞行里程大于零的数据
取出LRFMC模型数据
计算入会天数
- L = pd.to_datetime(new_data['LOAD_TIME'])-pd.to_datetime(new_data['FFP_DATE'])
- L = np.int64(L.astype(str).str.split().str[0]) # 会员入会天数
- L=pd.DataFrame(L,columns=['Days'])
- air_features = pd.concat([L, new_data.iloc[:, 2:]], axis=1) # 横向拼接
- print(air_features.head())
更改列名,描述性统计
重置索引
- sse=[]
- for i in range(2,10):
- result=KMeans(i,random_state=100).fit(data_scale)
- sse.append(result.inertia_)
- plt.figure()
- plt.plot(range(2,10),sse,marker='o')
- plt.xlabel('k')
- plt.ylabel('sse')
- plt.show()
k=3/4时最激烈
- sil=[]
- for i in range(2,8):
- result=KMeans(i,random_state=100).fit(data_scale)
- sil.append(silhouette_score(air_features,result.labels_))
- plt.figure()
- plt.plot(range(2,8),sil,marker='o')
- plt.xlabel('k')
- plt.ylabel('sil')
- plt.show()
k=2/3轮廓系数最高,综合k=3
kmeans聚类
绘制聚类图
- def customer_type(cluser):
- if cluser==0:
- return '重要发展客户'
- elif cluser==1:
- return '最重要客户'
- else:
- return '一般客户'
-
- air_features['客户类型']=air_features['cluster'].apply(customer_type)
- print(air_features.head())
绘制图像
- customer_count=air_features['客户类型'].value_counts()
- plt.figure()
- plt.subplot(1,2,1)
- plt.bar(customer_count.index,customer_count.values)
- #添加文本
- for a,b in zip(customer_count.index,customer_count.values):
- plt.text(a,b,b,ha='center',va='bottom',color='b')
- plt.subplot(1,2,2)
- plt.pie(customer_count.values,labels=list(customer_count.index),autopct='%.1f%%', textprops={'color':'r'},shadow=True)
- plt.legend(loc=1)
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。