基于K-means聚类算法进行客户人群分析

摘要:在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。

实验目标

案例内容介绍

在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。

我们使用的数据集是超市用户会员卡的基本数据以及根据购物行为得出的消费指数,总共有5个字段,解释如下:

  • CustomerID:客户ID
  • Gender:性别
  • Age:年龄
  • Annual Income (k$):年收入
  • Spending Score (1-100):消费指数

注意事项

实验步骤

这步准备案例所需的源代码和数据,相关资源已经保存在OBS中,我们通过ModelArts SDK将资源下载到本地,并解压到当前目录下。解压后,当前目录包含data和src两个目录,分别存有数据集和源代码。

matplotlib和seaborn是Python绘图工具,pandas和numpy是矩阵运算工具。

此段代码只是引入Python包,无回显(代码执行输出)。

使用pandas.read_excel(filepath)方法读取notebook中的数据文件。

  • filepath:数据文件路径

执行这段代码可以看到数据集的5个样本数据

执行这段代码可以看到数据集的维度

调用pandas.DataFrame.describe方法,可以看到各个特征的统计信息,包括样本数、均值、标准差、最小值、1/4分位数、1/2分位数、3/4分位数和最大值。

pandas.DataFrame.dtypes()方法可以展示各个字段的类型信息。

可以看到每个字段的类型信息。

查看是否有数据缺失,如果有,则需要填补。

实验中使用的这份数据很完善,没有任何一个属性的值为null,因此统计下来,null值的数量都是0

这段代码使用matplotlib绘制了数据中三个主要属性的统计直方图,包含年龄、收入、消费指数。

可以看到三张统计直方图,形状都与正态分布类似,说明数据量足够,数据抽样的分布也比较理想。

这段代码使用matplotlib绘制条状图,展示男、女样本数量的分布。

可以看到一张条状图。

展示任意两个属性之间的统计关系图。

此段代码执行后,会有9张统计图,展示了任意两个属性之间的统计关系。

此段代码执行后,会有1张统计图,以性别为参照,展示了年龄和收入之间的对应统计关系

此段代码执行后,会有1张统计图,以性别为参照,展示了收入和消费指数之间的对应统计关系

观察不同性别的客户的数据,在年龄、年收入、消费指数上的分布。

此段代码执行后,会有六幅boxplot图像。

根据年龄和消费指数进行聚类和区分客户。

我们使用1-10个聚类中心进行聚类。(此段代码无输出)

观察10次聚类的inertias,并以如下折线图进行统计。

inertias是K-Means模型对象的属性,它作为没有真实分类结果标签下的非监督式评估指标。表示样本到最近的聚类中心的距离总和。值越小越好,越小表示样本在类间的分布越集中。

可以看到,当聚类中心大于等于4之后,inertias的变化幅度显著缩小了。

我们使用4个聚类中心再次进行聚类。(此段代码无输出)

我们把4个聚类中心的聚类结果,以下图进行展示。横坐标是年龄,纵坐标是消费指数,4个红点为4个聚类中心,4块不同颜色区域就是4个不同的用户群体。

根据年收入和消费指数进行聚类和区分客户。

我们使用1-10个聚类中心进行聚类。(此段代码无输出)

观察10次聚类的inertias,并以如下折线图进行统计。

可以看到,当聚类中心大于等于5之后,inertias的变化幅度显著缩小了。

我们使用5个聚类中心再次进行聚类。(此段代码无输出)

我们把5个聚类中心的聚类结果,以下图进行展示。横坐标是年收入,纵坐标是消费指数,5个红点为5个聚类中心,5块不同颜色区域就是5个不同的用户群体。

至此,本案例完成。

Original: https://www.cnblogs.com/huaweiyun/p/17002696.html
Author: 华为云开发者联盟
Title: 基于K-means聚类算法进行客户人群分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/796135/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球