航空公司客户价值分析的实验报告

航空公司客户价值分析的实验报告

提示

参考书:张良均《Python数据分析与挖掘实战》等。

数据文件:课本自带数据。

使用软件:Pycharm。

类别:实验。

温馨提示:该实验是跟张良均这本书配合使用的,代码运行于Pycharm。

一、实验目的

1、基于Python,了解聚类算法的使用。

2、试着绘画向量图(雷达图)

二、实验环境

1、操作系统:Windows10。

2、代码运行环境:Jupyter notebook或Pycharm。

三、实验原理

1、Python开发平台的搭建。

2、Python使用入门。

3、Python数据分析工具。

4、K-means聚类算法。

四、实验步骤与实验结果

1、实验步骤:

航空公司客户价值分析的实验报告_第1张图片

2、实验结果:

(1)第1小题:

【1】温馨提示:
航空公司客户价值分析的实验报告_第2张图片

【2】代码:

# -*- coding:utf-8 -*-
# 标准差标准化
import pandas as pd
# (1)需要进行标准化的数据文件
data_file = 'zscoredata.xls'
# (2)标准差化后的数据文件
zscore_file = 'new_zscoredata.xls'

# 1、标准化处理
data = pd.read_excel(data_file)
# 2、简洁的语句实现了标准化变换,类似地可以实现任务想要的交换。
data = (data - data.mean(axis=0)) / (data.std(axis=0))
# 3、表头重命名
data.columns = ['Z'+i for i in data.columns]
# 4、数据写入
data.to_excel(zscore_file, index=False)
'''
标准差标准化处理后,形成ZL、ZR、ZF、ZM、ZC 5个属性的数据
'''

【3】运行结果:
航空公司客户价值分析的实验报告_第3张图片

(2)第2题:

【1】温馨提示:
航空公司客户价值分析的实验报告_第4张图片
航空公司客户价值分析的实验报告_第5张图片
航空公司客户价值分析的实验报告_第6张图片

【2】代码:

# -*- coding: utf-8 -*-
# K-Means聚类算法

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei'
# 导入K均值聚类算法
from sklearn.cluster import KMeans

# 待聚类的数据文件
input_file = 'preprocesseddata.xls'
# 需要进行的聚类类别数
k = 5

# 1、读取数据
data = pd.read_excel(input_file, usecols=[16, 17, 18, 19, 20])
# print(data)
# 2、调用k-means算法,进行聚类分析
# n_jobs是并行数,一般等于CPU数较好, n_jobs=8
kModel = KMeans(n_clusters=k)
# 3、训练模型
kModel.fit(data)

# 4、查看聚类中心
print("1、查看聚类中心:")
print(kModel.cluster_centers_)
# print(kModel.cluster_centers_[0])
# print(type(kModel.cluster_centers_)) # 
# print(type(kModel.labels_)) # 

# 5、查看各样本对应的类别
print("2、查看各样本对应的类别:")
print(kModel.labels_)

# 6、画出客户聚类中心向量图
# 雷达图内部的标签,目的是为了实现雷达图的线条闭合
labels = np.array(['ZL', 'ZR', 'ZF', 'ZM', 'ZC', 'ZL'])


# 数据个数
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()
# 注意:polar参数
ax = fig.add_subplot(111, polar=True)
for i in range(len(plot_data)):
    # 画线,label为雷达图旁边的标签
    ax.plot(angles, plot_data[i], 'o-', color=color[i], label=u'客户群'+str(i), linewidth=2)

ax.set_rgrids(np.arange(0.01, 3.5, 0.5), np.arange(-1, 2.5, 0.5))
ax.set_thetagrids(angles * 180/np.pi, labels)
plt.legend(loc=4)
# 保存成.jpg文件
plt.savefig('客户聚类中心图.jpg')
plt.show()

【3】运行结果:
航空公司客户价值分析的实验报告_第7张图片

航空公司客户价值分析的实验报告_第8张图片

五、实验总结

【1】通过这次实验,我了解并使用到K-means聚类算法。在这次实验中我遇到了:
(1)ValueError: The number of FixedLocator locations, usually from a call to set_ticks, does not match the number of ticklabels这个错误,经过长时间摸索发现了data = np.concatenate((data, [data[0]])) angles = np.concatenate((angles, [angles[0]]))这两句代码造成的,因为要线条闭合,所以在后面进行了拼接,网上有些人的解决方案是注释掉,但会出现一个问题,那就是雷达图不闭合。正确改法是:在radar_labels中重复第一个元素。
(2)另一个错误是:AttributeError: ‘Text’ object has no property ‘frac’,经过一些时间的摸索,发现这个错误是在新版本的matplotlib中这个 ‘Text’ object移除了’frac’属性。解决方法:去掉变量。
【2】总之,数据分析专研本不易,是综合性很强的事物,需要自身不断摸索琢磨!

你可能感兴趣的:(数据分析,实验报告,python,聚类,数据挖掘,数据分析)