3.根据航空公司目前积累的大量客户会员信息及其乘坐的航班记录,可以得到包括姓名、乘机的间隔、乘机次数、消费金额等十几条属性信息。 结合具体情景,最终选取客户消费时间间隔、消费频率、消费金额这三个指标作为航空公司识别客户价值的指标(常被称作RFM模型)。现给定处理后的数据集i_nuc.xls,完成下列要求: (1)对数据集进行预处理(比如规范化),得到数据集Data; (2)利用已预处理的数据(Data),基于RFM模型,使用K-Means算法对其进行聚类分析; (3)统计各类别的数目;给出聚类中心;详细输出每个样本对应的类别;画出每个类别的概率密度图。
时间: 2024-03-17 09:46:11 浏览: 339
好的,下面是根据航空公司客户会员信息进行RFM模型聚类分析的步骤:
1. 导入需要的库和数据集:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
```
```python
data = pd.read_excel('i_nuc.xls', sheet_name='Sheet1')
```
2. 对数据集进行预处理,包括规范化和缺失值处理:
```python
data = data[['FFP_DAYS','FLIGHT_COUNT','LAST_TO_END','SEG_KM_SUM','avg_discount']]
data = data.dropna()
scaler = StandardScaler()
data = scaler.fit_transform(data)
```
3. 基于RFM模型,使用K-Means算法对其进行聚类分析:
```python
kmeans = KMeans(n_clusters=5, random_state=0).fit(data)
labels = kmeans.labels_
centers = kmeans.cluster_centers_
```
4. 统计各类别的数目:
```python
unique, counts = np.unique(labels, return_counts=True)
clusters = dict(zip(unique, counts))
print(clusters)
```
5. 给出聚类中心:
```python
print(centers)
```
6. 输出每个样本对应的类别:
```python
data_with_label = pd.DataFrame(data, columns=['FFP_DAYS','FLIGHT_COUNT','LAST_TO_END','SEG_KM_SUM','avg_discount'])
data_with_label['label'] = labels
print(data_with_label)
```
7. 画出每个类别的概率密度图:
```python
for i in range(5):
plt.figure()
plt.title('Density plot of cluster %d' % i)
for j in range(5):
plt.hist(data_with_label[data_with_label['label'] == i].iloc[:, j], alpha=0.5, bins=20, density=True)
plt.legend(['FFP_DAYS', 'FLIGHT_COUNT', 'LAST_TO_END', 'SEG_KM_SUM', 'avg_discount'])
plt.show()
```
这样,您就可以完成根据航空公司客户会员信息进行RFM模型聚类分析的任务了。
阅读全文