问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于大数据挖掘分析的客户细分:K-means聚类分析实战

创作时间:
作者:
@小白创作中心

基于大数据挖掘分析的客户细分:K-means聚类分析实战

引用
CSDN
1.
https://blog.csdn.net/caxiou/article/details/137166959

本文将介绍如何使用K-means聚类分析算法对超市客户数据进行细分。通过数据分析和可视化,我们可以更好地理解客户群体的特征和行为模式,为商业决策提供数据支持。

数据分析步骤

  1. 导入必要的库
  2. 了解数据
  3. 数据可视化
  4. 使用K-means进行聚类分析

数据观察与预处理

引入库

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
plt.style.use('fivethirtyeight')
from sklearn.cluster import KMeans
import plotly as py
import plotly.graph_objects as go
import warnings
import os
warnings.filterwarnings('ignore')

查看数据

df=pd.read_csv('/home/kesci/input/1564558710/超市数据.csv')
df.head()

数据可视化


查看数据分布

样本数据中的性别比

年龄与年收入之间的关系

年龄与消费得分之间的关系

年龄与消费得分与年收入之间的分布

K-means聚类分析

确定聚类数量

x1=df[['Age','Spending Score (1-100)']].iloc[:,:].values
from sklearn.cluster import KMeans
inertia=[]
for i in range(1,11):  
    km=KMeans(n_clusters=i,init='k-means++',max_iter=300,n_init=10,random_state=100)
    km.fit(x1)
    inertia.append(km.inertia_)
plt.figure(1,figsize=(12,6))    
plt.plot(range(1,11),inertia)
plt.title('The Elbow Method',fontsize=20)
plt.xlabel('Number of Clusters')
plt.ylabel('inertia')
plt.show()

聚类结果可视化

km = KMeans(n_clusters = 4, init = 'k-means++', max_iter = 300, n_init = 10, random_state = 100)
y_means = km.fit_predict(x1)
plt.figure(1 , figsize = (12 , 6) )
plt.scatter(x1[y_means == 0, 0], x1[y_means == 0, 1], s = 200, c = 'salmon')
plt.scatter(x1[y_means == 1, 0], x1[y_means == 1, 1], s = 200, c = 'yellowgreen') 
plt.scatter(x1[y_means == 2, 0], x1[y_means == 2, 1], s = 200, c = 'cornflowerblue')
plt.scatter(x1[y_means == 3, 0], x1[y_means == 3, 1], s = 200, c = 'magenta')
plt.scatter(km.cluster_centers_[:,0], km.cluster_centers_[:, 1], s = 100, c = 'black' , label = 'centeroid')
plt.ylabel('Spending Score (1-100)') , plt.xlabel('Age')
plt.legend()
plt.show()

映射到三维空间上的分布如下:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号