建设银行信用卡境外网站盗刷,用易语言可以做网站吗,旅行网站排名,wordpress customize-support需求分析
理解并掌握聚类分析方法#xff0c;掌握数据的标准化#xff0c;掌握寻找最佳聚类数#xff0c;掌握聚类的绘图#xff0c;掌握聚类分析的应用场景。
系统实现
实验流程分析
借助航空公司数据#xff0c;对客户进行分类对不同类别的客户进行特征分析#xf…需求分析
理解并掌握聚类分析方法掌握数据的标准化掌握寻找最佳聚类数掌握聚类的绘图掌握聚类分析的应用场景。
系统实现
实验流程分析
借助航空公司数据对客户进行分类对不同类别的客户进行特征分析比较不同类别客户的价值对不同价值的客户类别进行个性化服务制定相应的营销策略
数据准备
加载本次实验所需要用到的包
打开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模型数据并整理
取出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]) # 会员入会天数
Lpd.DataFrame(L,columns[Days])
air_features pd.concat([L, new_data.iloc[:, 2:]], axis1) # 横向拼接
print(air_features.head())更改列名描述性统计 重置索引 数据标准化 寻找最佳聚类个数
绘制拐点图寻找下降最剧烈的点
sse[]
for i in range(2,10):resultKMeans(i,random_state100).fit(data_scale)sse.append(result.inertia_)
plt.figure()
plt.plot(range(2,10),sse,markero)
plt.xlabel(k)
plt.ylabel(sse)
plt.show()k3/4时最激烈
绘制轮廓系数图寻找轮廓系数高的点
sil[]
for i in range(2,8):resultKMeans(i,random_state100).fit(data_scale)sil.append(silhouette_score(air_features,result.labels_))
plt.figure()
plt.plot(range(2,8),sil,markero)
plt.xlabel(k)
plt.ylabel(sil)
plt.show()k2/3轮廓系数最高综合k3
建立聚类模型
绘制聚类图观察聚类情况
kmeans聚类 绘制聚类图 结果分析
合并数据并加入分类 聚合各类对各特征计算平均值 加入客户分类并画图
def customer_type(cluser):if cluser0:return 重要发展客户elif cluser1:return 最重要客户else:return 一般客户air_features[客户类型]air_features[cluster].apply(customer_type)
print(air_features.head())绘制图像
customer_countair_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,hacenter,vabottom,colorb)
plt.subplot(1,2,2)
plt.pie(customer_count.values,labelslist(customer_count.index),autopct%.1f%%, textprops{color:r},shadowTrue)
plt.legend(loc1)
plt.show()