牌具網(wǎng)站廣告怎么做開(kāi)一個(gè)免費(fèi)網(wǎng)站
需求分析
理解并掌握聚類分析方法,掌握數(shù)據(jù)的標(biāo)準(zhǔn)化,掌握尋找最佳聚類數(shù),掌握聚類的繪圖,掌握聚類分析的應(yīng)用場(chǎng)景。
系統(tǒng)實(shí)現(xiàn)
實(shí)驗(yàn)流程分析
- 借助航空公司數(shù)據(jù),對(duì)客戶進(jìn)行分類
- 對(duì)不同類別的客戶進(jìn)行特征分析,比較不同類別客戶的價(jià)值
- 對(duì)不同價(jià)值的客戶類別進(jìn)行個(gè)性化服務(wù),制定相應(yīng)的營(yíng)銷策略
數(shù)據(jù)準(zhǔn)備
- 加載本次實(shí)驗(yàn)所需要用到的包
打開(kāi)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 #讓負(fù)號(hào)正常顯示
- 讀取數(shù)據(jù),查看數(shù)據(jù)和整理數(shù)據(jù)信息
??https:staticfile.eduplus.netldataSetsystemLiblc3b5c0f37fe24797808613bc713d5585.rar。壓縮包中的數(shù)據(jù)為csv數(shù)據(jù),解壓并將該數(shù)據(jù)移動(dòng)到c:/數(shù)據(jù)分析/data目錄中
讀取并查看數(shù)據(jù)
?
取出SUM_YR_1和SUM_YR_2不為空的樣本
?
去除掉第一年、第二年票價(jià)均為0,同時(shí)平均折扣系數(shù)大于零和飛行里程大于零的數(shù)據(jù)
?
- 取出LRFMC模型數(shù)據(jù),并整理
取出LRFMC模型數(shù)據(jù)
計(jì)算入會(huì)天數(shù)?
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]) # 會(huì)員入會(huì)天數(shù)
L=pd.DataFrame(L,columns=['Days'])
air_features = pd.concat([L, new_data.iloc[:, 2:]], axis=1) # 橫向拼接
print(air_features.head())
更改列名,描述性統(tǒng)計(jì)?
?重置索引
數(shù)據(jù)標(biāo)準(zhǔn)化
?
尋找最佳聚類個(gè)數(shù)
- 繪制拐點(diǎn)圖,尋找下降最劇烈的點(diǎn)
sse=[]
for i in range(2,10):result=KMeans(i,random_state=100).fit(data_scale)sse.append(result.inertia_)
plt.figure()
plt.plot(range(2,10),sse,marker='o')
plt.xlabel('k')
plt.ylabel('sse')
plt.show()
k=3/4時(shí)最激烈?
- 繪制輪廓系數(shù)圖,尋找輪廓系數(shù)高的點(diǎn)
sil=[]
for i in range(2,8):result=KMeans(i,random_state=100).fit(data_scale)sil.append(silhouette_score(air_features,result.labels_))
plt.figure()
plt.plot(range(2,8),sil,marker='o')
plt.xlabel('k')
plt.ylabel('sil')
plt.show()
?k=2/3輪廓系數(shù)最高,綜合k=3
建立聚類模型
- 繪制聚類圖,觀察聚類情況
kmeans聚類
繪制聚類圖
結(jié)果分析
- 合并數(shù)據(jù),并加入分類
- 聚合各類,對(duì)各特征計(jì)算平均值
- 加入客戶分類并畫(huà)圖
def customer_type(cluser):if cluser==0:return '重要發(fā)展客戶'elif cluser==1:return '最重要客戶'else:return '一般客戶'air_features['客戶類型']=air_features['cluster'].apply(customer_type)
print(air_features.head())
?繪制圖像
customer_count=air_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,ha='center',va='bottom',color='b')
plt.subplot(1,2,2)
plt.pie(customer_count.values,labels=list(customer_count.index),autopct='%.1f%%', textprops={'color':'r'},shadow=True)
plt.legend(loc=1)
plt.show()