数据挖掘习题10

1.题干

       客户细分是将市场细分为具有相似特征的离散客户群体。客户细分可以成为识别未满足客户需求的有力手段。利用上述数据,公司可以通过开发具有独特吸引力的产品和服务来超越竞争对手。

      现有某超市客户的特征数据集,包括客户编号(ID),性别,婚姻状况(Marital status),年龄,受教育程度,收入,职业,居住小区规模(Settlement size)。读取数据,查看数据的基本情况,输出基本统计量,查看有无缺失值,数据标准化,利用KMeans,层次聚类AgglomerativeClustering,基于密度的聚类DBSCAN,输出DB指数等评价指标轮廓系数(Silhouetie Coeficient)。

2.数据格式

3.代码 

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN
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_csv('dataset/segmentation data.csv')
printf(100, '查看数据基本信息')
print(data.info())
printf(100, '输出基本统计量')
print(data.describe())
printf(100, '查看是否有缺失值')
print(data.isnull().sum())

scaler = StandardScaler()
scaled_data = scaler.fit_transform(data.drop(columns=['ID']))

models = {
    "KMeans": KMeans(n_clusters=3, random_state=42),
    "AgglomerativeClustering": AgglomerativeClustering(n_clusters=3),
    "DBSCAN": DBSCAN(eps=0.5, min_samples=5),
}

for name, model in models.items():
    printf(100,f'{name}模型聚类结果为')
    clusters = model.fit_predict(scaled_data)
    # print(clusters)
    # print(len(clusters))
    print("KMeans Silhouette Score:", silhouette_score(scaled_data, clusters))  # 轮廓系数
    print("DBSCAN Davies-Bouldin Index:", davies_bouldin_score(scaled_data, clusters)) # 戴维森-鲍威尔指数
    print("calinski_harabasz_score:", calinski_harabasz_score(scaled_data, clusters)) # 卡林斯基-哈拉巴斯指数

4.后续更新中 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值