机器学习——聚类学习
·

项目背景
假设你是一家电子商务公司的数据分析师,公司希望根据客户的购买行为数据进行客户细分,以便制定更有针对性的营销策略。你需要使用K-means聚类算法对客户进行分组,并使用轮廓系数确定最佳K值。
数据集
我们将使用Kaggle上的"Customer Segmentation"数据集:
- 数据集链接: Mall Customer Segmentation Data | Kaggle
- 数据集包含客户ID、性别、年龄、年收入(千美元)和消费分数(1-100)
"""""
项目背景
假设你是一家电子商务公司的数据分析师,公司希望根据客户的购买行为数据进行客户细分,以便制定更有针对性的营销策略。你需要使用K-means聚类算法对客户进行分组,并使用轮廓系数确定最佳K值。
数据集
我们将使用Kaggle上的"Customer Segmentation"数据集:
- 数据集链接: https://www.kaggle.com/datasets/vjchoudhary7/customer-segmentation-tutorial-in-python
- 数据集包含客户ID、性别、年龄、年收入(千美元)和消费分数(1-100)
"""""
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
import pandas as pd
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
data=pd.read_csv("./Mall_Customers.csv")
print(data)
x=data[["Annual Income (k$)","Spending Score (1-100)"]]
print(x)
sc = []
range_k = range(2,11)
for i in range_k:
kmeans = KMeans(n_clusters=i,random_state=42)
pred_labels= kmeans.fit_predict(x)
score = silhouette_score(x,pred_labels)
sc.append(score)
print(f"K={i}时的轮廓系数:{score:.3f}")
plt.figure()
plt.plot(range_k, sc)
plt.xlabel('K 值')
plt.ylabel('轮廓系数')
plt.title('轮廓系数法确定最佳K值')
plt.grid(linestyle="--")
plt.show()
kmeans=KMeans(n_clusters=5,random_state=42)
kmeans.fit(x)
y_pred=kmeans.predict(x)
labels=kmeans.fit_predict(x)
center=kmeans.cluster_centers_
print(center)
score=silhouette_score(x,labels)
print(score)
plt.figure()
plt.scatter(x=x["Annual Income (k$)"],y=x["Spending Score (1-100)"],c=y_pred)
plt.scatter(center[:,0],center[:,1],c="r",marker="*")
plt.xlabel('年收入(k$)')
plt.ylabel('消费分数')
plt.title('客户细分')
plt.grid(linestyle="--")
plt.show()



DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)