航空公司客户价值分析

 描述:采用数据挖掘算法中K-Means聚类算法,首先对数据探索,清洗,规约,然后对数据归一化处理,使用K-Means算法进行聚类分析,

代码:

#-*- coding:utf -8-*-
import pandas as pd

#对数据基本探索,返回最大最小值
def Data_Explore(data):
    outputfile = 'F:/chapter7_explore_result.xls'
    data_explore = data.describe(percentiles= [],include='all').T
    data_explore['null'] = len(data)  - data_explore['count']
    data_explore = data_explore[['null','max','min']]
    data_explore.columns = [u'空值数',u'最大值',u'最小值'] #重命名表头
    data_explore.to_excel(outputfile)
    return data

#数据预处理,包括数据清洗
def Data_preprocessing(data):
    clean_file = 'F:/chapter_clean_data'
    data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()] #票价非空值保留
    #只保留票价非零的,或者平均折扣价率与总飞行公里数同时为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[index1 | index2 | index3]
    data.to_excel(clean_file)
    
def Data_Standard():
    import pandas as pd
    datafile = 'F:/Python/IDLE--python/BigDataAnalyze/chapter7-data/zscoredata.xls'
    outfile = 'F:/zerosdata.xls'
    
    #标准化处理:(原始数据-数据的平均值) /数据的标准值
    data = pd.read_excel(datafile)
    data_std = (data-data.mean(axis = 0))/(data.std(axis=0))
    data_std.columns = ['Z' + i for i in data.columns] #重命名表头
    data_std.to_excel(outfile)
    return data_std

def Kmeans_div(data_std):
    from sklearn.cluster import KMeans #导入K均值聚类算法
    
    k = 5
    #调用k-means算法,进行聚类分析
    kmodel = KMeans(n_clusters=k,n_jobs=4)
    kmodel.fit(data_std) #训练模型
    
    print(kmodel.cluster_centers_ )#查看聚类中心
    print("-------------------------------------")
    print(kmodel.labels_ )#查看个样本对应的类型
    return kmodel
    
def Draw_Result(kmodel):
    import matplotlib.pyplot as plt
    plt.figure(figsize=(8,6))
    clu = kmodel.cluster_centers_
    x=[1,2,3,4,5]
    colors = ['red','green','yellow','blue','black']
    for i in range(5):
        plt.plot(x,clu[i],label='clustre' + str(i),linewidth=6-i,color=colors[i],marker='o')
    
    plt.xlabel('L R F M C')
    plt.ylabel('values')
    plt.show()
    

def main():
    inputfile = 'F:/Python/IDLE--python/BigDataAnalyze/chapter7-data/air_data.csv'
    data = pd.read_csv(inputfile, encoding='utf-8') #读取数据
    
    #数据基本探索,主要是对数据缺失值和异常值分析
    #Data_Explore(data)
    #数据预处理,过滤掉不符合规则的数据
    #Data_preprocessing(data)
    #标准差标准化
    data_std = Data_Standard()
    #K-means聚类,对客户数据进行客户分群
    kmodel = Kmeans_div(data_std)
    #画出分析图
    Draw_Result(kmodel)
    
    
if __name__ == '__main__':
    main()


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值