testszy

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
你是某电商平台的数据分析师,需要根据客户的购买行为数据进行客户细分。数据集customer_behavior.csv包含客户的年度购买金额、购买频率、平均订单价值等特征,但没有预定义类别标签。你需要使用K-means聚类算法对客户进行分群,并分析不同客户群体的特征。 数据集包含以下特征:Annual_Spending、Purchase_Frequency、Avg_Order_Value、Tenure_Months。 import pandas as pd import numpy as np from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt from sklearn.metrics import silhouette_score # 1. 读取数据 data = pd.read_csv('customer_behavior.csv') # 2. 查看数据基本信息 print("数据基本信息:") print(data.______) # 填空1:查看数据统计摘要 print("\n数据形状:", data.shape) # 3. 特征标准化 scaler = StandardScaler() X_scaled = scaler.______(data) # 填空2:对数据进行标准化 # 4. 使用肘部法则确定最佳聚类数 inertia = [] k_range = range(1, 11) for k in k_range: kmeans = KMeans(n_clusters=k, random_state=42, n_init=10) kmeans.fit(X_scaled) inertia.append(kmeans.______) # 填空3:获取簇内误差平方和 # 5. 绘制肘部图 plt.figure(figsize=(10, 6)) plt.plot(k_range, inertia, 'bo-') plt.xlabel('Number of Clusters (k)') plt.ylabel('Inertia') plt.______('Elbow Method for Optimal k') # 填空4:设置图表标题 plt.grid(True, alpha=0.3) plt.show() # 6. 选择最佳聚类数(根据肘部法则选择k=3) optimal_k = 3 kmeans = KMeans(n_clusters=optimal_k, random_state=42, n_init=10) cluster_labels = kmeans.fit_predict(X_scaled) # 7. 计算轮廓系数评估聚类效果 silhouette_avg = silhouette_score(______, cluster_labels) # 填空5:计算轮廓系数 print(f"\n轮廓系数(聚类效果评估): {silhouette_avg:.4f}") # 8. 将聚类标签添加到原始数据 data['Cluster'] = # 填空6:将聚类标签添加到原始数据 # 9. 分析每个簇的特征 cluster_summary = data.groupby('Cluster').agg( ('Annual_Spending', 'mean'), ('Purchase_Frequency', 'mean'), ('Avg_Order_Value', 'mean'), ('Tenure_Months', 'mean') ).round(2) print("\n各簇特征平均值:") print(cluster_summary) # 10. 可视化聚类结果(前两个特征的散点图) plt.figure(figsize=(10, 8)) # 填空8:指定画布的宽度为10英寸,高度为8英寸 scatter = plt.scatter(data['Annual_Spending'], data['Purchase_Frequency'], c=data['Cluster'], cmap='viridis', s=50, alpha= # 填空9:设置透明的为70% plt.xlabel('Annual Spending') plt.ylabel('Purchase Frequency') plt.colorbar(scatter, label='Cluster') plt.title('Customer Clusters Visualization') plt.grid(True, alpha=0.3) # 标注聚类中心 centers = scaler.inverse_transform(kmeans.cluster_centers_) plt.scatter(______, centers[:, 1], c='red', s=200, alpha=0.8, marker='X', label='Cluster Centers') # 填空10 设置X轴坐标:提取所有聚类中心的第1个特征值中心数据 plt.legend() plt.show()