数据挖掘习题6

1.题干

        基于购买行为数据对超市顾客进行市场细分。现有超市顾客购买行为的RFM数据集,利用各种聚类算法实现顾客群细分。请关注如下方面:分析顾客购买行为的RFM数据集中,R、F、M这三个变量有怎样的分布特征?尝试将顾客分成4类,并分析各类顾客的购买行为特征。评价模型,并分析聚成4类是否恰当。

2.数据格式

 3.代码

import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score

def printf(n, strf):
    print()
    print('-' * n)
    print(f"\033[1m{strf}\033[0m")
    print()

data = pd.read_excel('RFM数据.xlsx')
printf(100, '查看数据基本信息')
print(data.info())
printf(100, '输出基本统计量')
print(data.describe())

fig, axes = plt.subplots(1, 3, figsize=(15, 5))
axes[0].hist(data['R'], bins=20)
axes[0].set_title('R Distribution')
axes[1].hist(data['F'], bins=20)
axes[1].set_title('F Distribution')
axes[2].hist(data['M'], bins=20)
axes[2].set_title('M Distribution')
plt.show()

X = data.drop("CardID", axis=1)
scaler = StandardScaler()
X = scaler.fit_transform(X)
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
data['Cluster'] = kmeans.labels_
cluster_summary = data.groupby('Cluster').agg({
    'R': 'mean',
    'F': 'mean',
    'M': 'mean'
})
print(cluster_summary)

clusters = kmeans.fit_predict(X)
print("KMeans Silhouette Score:", silhouette_score(X, clusters))# 轮廓系数
print("DBSCAN Davies-Bouldin Index:",davies_bouldin_score(X, clusters))# 戴维森-鲍威尔指数
print("calinski_harabasz_score:",calinski_harabasz_score(X, clusters)) # 卡林斯基-哈拉巴斯指数

4.后续更新中 

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值