商务服务
实战干货|Python 数据分析消费者用户画像
2024-11-07 19:46

今天给大家介绍一个聚类和降维结合的项目,分为两块内容

实战干货|Python 数据分析消费者用户画像

  • 直接使用原数据,经过数据预处理和编码后,基于原生的K-Means和PCA/T-SNE实现用户的聚类

  • 使用基于Transformer的预训练模型转换后的高维数据,再使用K-Means和PCA/T-SNE实现用户的聚类

本文先介绍第一种方案的完整过程。

整个项目的导图

技术要学会交流、分享,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

好的文章离不开粉丝的分享、推荐,资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

技术交流、代码、数据获取方式如下

方式①、添加微信号:dkl88194,备注:来自CSDN + 消费者数据
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:消费者数据

我们打造了《100个超强算法模型》,特点:从0到1轻松学习,原理、代码、案例应有尽有,所有的算法模型都是按照这样的节奏进行表述,所以是一套完完整整的案例库。

很多初学者是有这么一个痛点,就是案例,案例的完整性直接影响同学的兴致。因此,我整理了 100个最常见的算法模型,在你的学习路上助推一把

In [1]:

In [2]:

数据的探索性分析过程,了解数据基本信息

In [3]:

Out[3]:

In [4]:

Out[4]:

In [5]:

Out[5]:

In [6]:

Out[6]:

In [7]:

Out[7]:

结果表明数据中没有缺失值。

In [8]:

主要是针对分类型的数据进行编码工作

In [9]:

In [10]:

Out[10]:

设定数据预处理器

In [11]:

In [12]:

In [13]:

Out[13]:

In [14]:

Out[14]:

基于Python Outlier Detection库进行异常值处理(Kmeans对异常值敏感)。

另外一种方法ECOD(empirical cumulative distribution functions for outlier detection)基于经验累积分布函数的异常值检测方法。

In [15]:

Out[15]:

In [16]:

In [17]:

In [18]:

Out[18]:

查看数据量

In [19]:

Out[19]:

In [20]:

Out[20]:

7.1 肘图识别k值

聚类过程中的k值如何确定?介绍基于肘图的方法,详细参考

https://www.geeksforgeeks.org/elbow-method-for-optimal-value-of-k-in-kmeans/

In [21]:

Out[21]:

我们可以看到k=6的时候是最好的。

7.2 轮廓系数变化

In [22]:

不同k值下的轮廓系数对比

7.3 实施聚类

从结果来说,k=6或者5效果都还OK,在这里我们最终选择k=5进行聚类分群

In [23]:

7.4 评价聚类效果

聚类效果如何评价?常用的三种评价指标

  • Davies-Bouldin指数

  • Calinski-Harabasz Score

  • Silhouette Score

In [24]:

Davies-Bouldin指数

Davies-Bouldin指数是聚类算法的一种评估方法,其值越小则表示聚类结果越好。该指数的原理是通过比较不同聚类簇之间的距离和不同聚类簇内部距离来测量聚类的效果。其计算方法如下

  • 对于每一个聚类簇,计算其中心点(centroid)。

  • 计算每个聚类簇内点与其中心点的距离,并求其平均值,得到聚类内部距离(intra-cluster distance)。

  • 计算不同聚类簇之间中心点的距离,并求其平均值,得到聚类间距离(inter-cluster distance)。

  • 对于每个聚类簇,计算其Davies-Bouldin指数:除该簇外所有其他簇中心点与该簇中心点距离的平均值与该簇内部距离的比值。

  • 对所有聚类簇的Davies-Bouldin指数求平均值,得到聚类总体的Davies-Bouldin指数。

通过Davies-Bouldin指数,我们可以比较不同聚类算法、不同参数下的聚类效果,从而选择最佳的聚类方案。Davies-Bouldin指数能够考虑到聚类结果的波动情况,对于相似的聚类结果,其Davies-Bouldin指数较大。因此,Davies-Bouldin指数能够区分不同聚类结果的相似程度。

此外,Davies-Bouldin指数没有假设聚类簇形状和大小的先验知识,因此可以适用于不同聚类场景。

Calinski-Harabasz Score

Calinski-Harabasz Score是一种用于评估聚类质量的指标,它基于聚类中心之间的方差和聚类内部的方差之比来计算。该指数越大,表示聚类效果越好。

Calinski-Harbasz Score是通过评估类之间方差和类内方差来计算得分,具体公式表示为

其中,代表聚类类别数,代表全部数据数目,是类间方差,是类内方差。

的计算公式

trace只考虑了矩阵对角上的元素,即类中所有数据点到类的欧几里得距离。

的计算公式为

其中,是类中所有数据的集合,是类q的质点,是所有数据的中心点,是类数据点的总数。

Silhouette Score

Silhouette Score表示为轮廓系数。

Silhouette Score 是一种衡量聚类结果质量的指标,它结合了聚类内部的紧密度和不同簇之间的分离度。对于每个数据点,Silhouette Score 考虑了以下几个因素

  • a:数据点到同簇其他点的平均距离(簇内紧密度

  • b:数据点到最近不同簇的平均距离(簇间分离度

具体而言,Silhouette Score 计算公式为

轮廓系数的取值在 -1 到 1 之间,越接近 1 表示聚类效果越好,越接近 -1 则表示聚类结果较差。

In [25]:

参考官网学习地址:https://github.com/MaxHalford/prince

8.1 降维函数

In [26]:

8.2 降维可视化

下面是基于2个主成分的可视化绘图函数

In [27]:

下面是基于3个主成分的可视化绘图函数

In [28]:

8.2.1 2维

下面是2维可视化的效果

In [29]:

In [30]:

可以看到聚类效果并不是很好,数据并没有隔离开。

8.2.2 3维

下面是3维可视化的效果

In [31]:

In [32]:

从结果中看到,聚类效果并不是很好,样本并没有分离开。

前面3个主成分的占比总共为27.98%,不足以捕捉到原始的数据信息和模式。下面介绍基于T-SNE的降维,该方法主要是用于高维数据的降维可视化

取出部分样本

In [33]:

Out[33]:

9.1 实施2D降维

9.1.1 降维

In [34]:

In [35]:

In [36]:

9.1.2 可视化

In [37]:

9.2 实施3D降维

9.2.1 降维

对聚类后的结果实施T-SNE降维

In [38]:

In [39]:

In [40]:

9.2.2 降维结果可视化

In [41]:

对比两种降维方法在二维效果上的比较:很明显,T-SNE的效果好很多~

将无异常的原始数据df_no_outliers作为特征X,聚类后的标签clusters_predict作为目标标签y,建立一个LGBMClassifer分类模型

10.1 建立模型

In [42]:

Out[42]:

LGBMClassifier

10.2 shap可视化

In [43]:

从结果中可以看到,age字段是最为重要的。

10.3 模型预测

In [44]:

In [45]:

10.4 聚合结果

In [46]:

以聚类的簇结果cluster为分组字段

  • 统计数值型字段的均值(mean

  • 分类型字段的最高频数字段(分组后的第一个数据信息

In [47]:

Out[47]:

|
| cluster | job | marital | education | housing | loan | age | balance | default |
| — | — | — | — | — | — | — | — | — | — |
| 0 | 4 | technician | single | secondary | yes | no | 32.069740 | 794.696306 | no |
| 1 | 2 | blue-collar | married | secondary | yes | no | 34.569409 | 592.025644 | no |
| 2 | 3 | management | married | secondary | yes | no | 42.183012 | 7526.310217 | no |
| 3 | 0 | management | married | tertiary | no | no | 43.773960 | 872.797951 | no |
| 4 | 1 | blue-collar | married | secondary | no | no | 50.220989 | 836.407504 | no |

参考原英文学习地址:https://towardsdatascience.com/mastering-customer-segmentation-with-llm-3d9008235f41

后面会给大家分享Transformer模型+Kmeans+PCA/T-SNE的方案~

代码已经整理完成,文章梳理中。先提前看看基于Transformer模型转换的数据(数据扩充到384维)使用PCA的效果的确好太多了

    以上就是本篇文章【实战干货|Python 数据分析消费者用户画像】的全部内容了,欢迎阅览 ! 文章地址:http://zleialh.tongchengxian.cn/news/133.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 通成线资讯移动站 http://zleialh.tongchengxian.cn/mobile/ , 查看更多   
最新新闻
【AI系统的出现】数据、算法与计算力的完美交响
在数字化时代的洪流中,人工智能(AI)如同破茧的凤凰,展翅高飞。这篇文章深入剖析了AI系统崛起的三大支柱:海量数据的积累、计
做小说推文发布哪个平台好?小说推文视频什么类型比较好做
小说推广是不挑平台的,抖音,小红书,快手,视频号都可以,这是个真正可以做到一鱼多吃的项目。brbr抖音是转化率最好的平台,快
《抖音短视频》活跃状态查看方法
最近很多小伙伴发现自己的抖音中多了一个“活跃状态”的标识,那么这个活跃状态是什么意思?在哪里可以看到呢?下面小编为大家带
复旦中文文本分类语料库:助力中文NLP研究的利器
复旦中文文本分类语料库是由复旦大学计算机科学与技术系的李荣陆老师精心打造的一项宝贵资源。该语料库旨在为中文自然语言处理&#
为什么你的设计总是同质化?
解决设计问题,是我们每个设计师必须要具备的能力,但是又不能为了不一样而不一样,所以以自身品牌出发来做差异化,才是正确的方
“不买年”成新年关键词:不是不买,而是高质量“买买买”
2022年第一天,在北京工作的王芳语在朋友圈留下这样一句签名——“2022年,挑战‘不买年’”。新年伊始,很多年轻人纷纷在社交平
怎么查询百度搜索关键词的用户数量呢【怎么查百度关键词检索量】
在当今数字化的时代,了解市场行情和用户需求对于企业和个人都至关重要,查询百度搜索关键词的用户数量是一种常用的方法,它可以
今日沪深300股指期货行情价格分析[有帮助]
注:点此进入主页查看全部最新行情分析。10月15日沪深300股指期货策略:中性。短期财政刺激预期落空,股指转入震荡回落,建议观
本企业新闻