您的位置:首页 > 其它

数据挖掘实例(航空公司客户价值分析)

2017-11-29 18:12 471 查看
一、实现目标

(1)借助航空公司客户数据,对客户进行分类

(2)对不同的客户进行特征分析,比较不同类客户的客户价值

(3)对不同价值的客户类别提供个性化服务,指定相应的营销策略

二、分析方法与过程

航空客运信息挖掘主要步骤:

(1)从航空公司的数据源进行选择性的抽取与新增数据抽取分别形成历史数据和增量数据

(2)对步骤(1)中形成的两个数据集进行数据探索和预处理,包括数据缺失值与异常值的探索分析,数据的属性规约、清洗和变换

(3)利用步骤(2)中形成的已完成数据预处理的建模数据,基于客户价值LRFMC模型进行客户分群,对各个客户进行特征分析,识别出有价值的客户

(4)针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务

数据抽取

数据探索分析:对数据进行缺失值分析与异常值分析,分析出数据的规律以及异常值,通过对数据观察发现原始数据中存在票价为空值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录,查找每列属性观察值中空值个数、最大值、最小值:

# -*- coding:utf-8 -*-
#对数据进行基本的探索,返回缺失值个数,最大值,最小值
import pandas as pd

#数据文件路径初始化
datafile = 'air_data.csv'  #第一行为标签属性
#定义数据探索结果文件名
resultfile = 'data_explore.xls'

#使用pandas模块内置函数对文件内容惊醒读取
data = pd.read_csv(datafile,encoding = 'utf-8')  #设置文件读取编码格式

#获取数据的相应属性内容
explore = data.describe(percentiles=[], include='all').T  #对探索结果矩阵进行转置
print('T-explore:',explore)

#计算数据结果中的空值个数,describe()函数只返回有值数据个数
explore['null'] = len(data) - explore['count']

#提取数据探索结果中的null、min、max三列,并且对数据表表头进行重命名
explore = explore[['null','max','min']]
print('explore:',explore)
print('explore.columns:',explore.columns)

explore.columns = [u'空值数',u'最大值',u'最小值']
print('u-explore:',explore)

#将数据探索的最后结果写入文件中
explore.to_excel(resultfile)
print('文件写入完成!')


数据预处理

采用数据清洗、属性规约、数据变换的预处理方法

使用Pandas对满足清洗条件的数据进行丢弃,处理方法:满足清洗条件的一行数据全部丢弃:

# -*- coding:utf-8 -*-
#清洗丢弃掉不符合规则的数据
import pandas as pd

datafile = 'air_data.csv'
cleanfile = 'data_clean.csv'

#读取文件内容,并设置读取的编码格式
data = pd.read_csv(datafile,encoding = 'utf-8')

#提取票价为非空值
# print('data["SUM_YR_1"].notnull:',data['SUM_YR_1'].notnull())
data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]
# print("[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]:",data)

#票价不为0,或者平均折扣率与总公里数同时为0的记录
index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)

#将数据整合至data变量中
data = data[index1|index2|index3]

data.to_csv(cleanfile)
print('文件写入完毕!')


数据变换

将数据转换成适当的格式,以适应挖掘任务以及算法的需要

# -*- coding:utf-8 -*-
#标准化标准差
import pandas as pd

datafile = 'zscoredata.xls'
stdfile = 'data_std.xls'

#读取数据,并设置将数据转化为utf-8格式
data = pd.read_excel(datafile,coding = 'utf-8')
#根据标准化公式对数据进行标准化
data = (data - data.mean(axis=0))/(data.std(axis=0))
#对表的表头进行重命名
data.columns = ['Z'+i for i in data.columns]
#将标准化结果写入文件
data.to_excel(stdfile)
print('文件写入完毕!')


模型构建

客户价值分析模型构建主要由两个部分构成,第一部分根据航空公司客户5个指标的数据,对客户进行聚类分群。第二部分结合业务对每个客户群进行特征分析,分析其客户价值,并对每个客户群进行排名。

(1)客户聚类

采用K-Means聚类算法对客户数据进行客户分群,聚成5类

# -*- coding:utf-8 -*-
#导入相关包
import pandas as pd
from sklearn.cluster import KMeans

#初始化数据文件路径
datafile = 'data_std.xls'
#读出数据
data = pd.read_excel(datafile,coding = 'utf-8')
#设置类别个数5
k = 5

#创建聚类模型对象
model = KMeans(n_clusters=5)
model.fit(data)  #寻来你模型

#输出模型的聚类中心,查看各样本的类别
print('model.cluster_centers_:',model.cluster_centers_)
print('model.labels_:',model.labels_)


工程文件内容:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息