资源简介
航空公司客户价值分析完整代码
项目背景:为某航空公司需要以客户为中心,按照客户的需求,在对客户的特点了解上使用不同的营销手段,目的是争取更多新客户,降低客户流失率,降低服务成本,提高业务收入,增加ARPU值(average revenue per user每个用户的平均收益,一般以月为单位),精准的市场营销策略制定。
详见博客:https://blog.csdn.net/u010963246/article/details/90484644
代码片段和文件信息
#-*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
data = pd.read_csv(r‘.\\data\\air_data.csv‘ encoding=“utf-8“)
print(data.shape)
print(data.info())
data = data[data[“SUM_YR_1“].notnull() & data[“SUM_YR_2“].notnull()]
index1 = data[“SUM_YR_1“] != 0
index2 = data[“SUM_YR_2“] != 0
index3 = (data[“SEG_KM_SUM“] == 0) & (data[“avg_discount“] == 0)
data = data[index1 | index2| index3]
print(data.shape)
filter_data = data[[ “FFP_DATE“ “LOAD_TIME“ “FLIGHT_COUNT“ “SUM_YR_1“ “SUM_YR_2“ “SEG_KM_SUM“ “AVG_INTERVAL“ “MAX_INTERVAL“ “avg_discount“]]
filter_data[0:5]
data[“LOAD_TIME“] = pd.to_datetime(data[“LOAD_TIME“])
data[“FFP_DATE“] = pd.to_datetime(data[“FFP_DATE“])
data[“入会时间“] = data[“LOAD_TIME“] - data[“FFP_DATE“]
data[“平均每公里票价“] = (data[“SUM_YR_1“] + data[“SUM_YR_2“]) / data[“SEG_KM_SUM“]
data[“时间间隔差值“] = data[“MAX_INTERVAL“] - data[“AVG_INTERVAL“]
deal_data = data.rename(
columns = {“FLIGHT_COUNT“ : “飞行次数“ “SEG_KM_SUM“ : “总里程“ “avg_discount“ : “平均折扣率“}
inplace = False
)
filter_data = deal_data[[“入会时间“ “飞行次数“ “平均每公里票价“ “总里程“ “时间间隔差值“ “平均折扣率“]]
print(filter_data[0:5])
filter_data[‘入会时间‘] = filter_data[‘入会时间‘].astype(np.int64)/(60*60*24*10**9)
print(filter_data[0:5])
print(filter_data.info())
filter_zscore_data = (filter_data - filter_data.mean(axis=0))/(filter_data.std(axis=0))
filter_zscore_data[0:5]
def distEclud(vecA vecB):
“““
计算两个向量的欧式距离的平方,并返回
“““
return np.sum(np.power(vecA - vecB 2))
def test_Kmeans_nclusters(data_train):
“““
计算不同的k值时,SSE的大小变化
“““
data_train = data_train.values
nums = range(2 10)
SSE = []
for num in nums:
sse = 0
kmodel = KMeans(n_clusters=num n_jobs=4)
kmodel.fit(data_train)
# 簇中心
cluster_ceter_list = kmodel.cluster_centers_
# 个样本属于的簇序号列表
cluster_list = kmodel.labels_.tolist()
for index in range(len(data)):
cluster_num = cluster_list[index]
sse += distEclud(data_train[index :] cluster_ceter_list[cluster_num])
print(“簇数是“ num “时; SSE是“ sse)
SSE.append(sse)
return nums SSE
nums SSE = test_Kmeans_nclusters(filter_zscore_data)
#画图,通过观察SSE与k的取值尝试找出合适的k值
# 中文和负号的正常显示
plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘
plt.rcParams[‘font.size‘] = 12.0
plt.rcParams[‘axes.unicode_minus‘] = False
# 使用ggplot的绘图风格
plt.style.use(‘ggplot‘)
## 绘图观测SSE与簇个数的关系
fig=plt.figure(figsize=(10 8))
ax=fig.add_subplot(111)
ax.plot(numsSSEmarker=“+“)
ax.set_xlabel(“n_clusters“ fontsize=18)
ax.set_ylabel(“SSE“ fontsize=18)
fig.suptitle(“KMeans“ fontsize=20)
plt.show()
kmodel = KMeans(n_clusters=5 n_jobs=4)
kmodel.fit(filter_zscore_data)
# 简单打印结果
r1 = pd.Series(kmodel.labels_).value_counts() # 统计各个类别的数目
r2 = pd.Dataframe(kmodel.cluster_centers_) # 找出聚类中心
# 所有簇中心坐标值中最大值和最小值
max = r2.value
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-07-05 16:10 aircustmer\
文件 5428 2019-05-23 16:17 aircustmer\AirTest2.py
目录 0 2019-07-05 16:09 aircustmer\data\
文件 14478308 2015-12-05 21:05 aircustmer\data\air_data.csv
文件 31963648 2019-05-29 14:54 aircustmer\data\result2.xls
- 上一篇:海关联调服务
- 下一篇:网络模型与多目标遗传算法
相关资源
- L1最小化的视觉跟踪 论文 代码详细解
- 自适应滤波器原理-Simon Haykin 包括所有
- 浅墨的opencv学习代码,有注释,前十
- 《剑指offer》第二版 高清PDF+代码附赠
- 100+个安卓应用程序开发工程代码.ra
- hands-on machine learning with scikit-learn an
- 物流app源代码司机
- 黑金FPGA开发板的AD_DA模块Verilog代码和
- vue商城项目笔记+原代码
- 租车代码.zip
- lpc1114例程源代码
- Vue全家桶之Vuex代码
- 2019美赛C题论文中英文及参考代码.r
- 设计模式(包含5个设计模式)含源代
- opensees源代码
- 广告弹窗、上拉、list滑动换位、图片
- 《微信小程序开发入门及案例详解》
- Unity3D RPG角色扮演游戏 源代码上
- accp8.0.0SSM第一章答案
- 网上商城完整源代码
- 仿豆丁网源代码+仿百度文库源码全套
- Qt播放视频代码,VS项目
- BIOS研发技术剖析完整版含光盘
- Vivado2017.4平台下简单波形代码
- tcpdump 代码分析
- 唐诗学习网站代码
- 黑马程序员Vue深入浅出视频代码
- 黑男奉献版服装ERP生产管理软件整体
- 代码阅读方法与实践.2004.中文版(3
- mpu6050资料代码
评论
共有 条评论