实现该项目的流程如下

"""
项目:用户对物品类别的喜好细分(菜篮子分析) 主算法:PCA降维算法
KMeans算法 总思路
1、导包
2、获取数据
3、数据处理
5、特征工程(使用PCA降维)
   6、使用KMeans算法进行模型训练
   7、模型评估

"""

First of all!!导包

# 1、导包

import pandas as pd #读取数据用
from sklearn.decomposition import PCA # PCA算法,用于把一些没必要的特征删除
from sklearn.cluster import KMeans # 用来进行无目标值训练,即无监督学习
from sklearn.metrics import silhouette_score # 衡量无监督学习的模型是否优秀

然后就是导入数据啦

# 2、获取数据

order_products = pd.read_csv("order_products__prior.csv")
products = pd.read_csv("products.csv")
orders = pd.read_csv("orders.csv")
aisles = pd.read_csv("aisles.csv")

这里提供数据集的下载(百度网盘)(数据很大,不要用流量!!)

链接:https://pan.baidu.com/s/1k-_rvVhc_tjUB8GLFkYlDw
提取码:pq95

接着就是最爱的数据处理环节了

# 数据处理
# 合并表:.merge(),连接两个DataFrame并返回连接之后的DataFrame,每个参数有不同的结果,详情请自行搜索
# 目的是将user_id与aisles连接在一起 tab1 = pd.merge(aisles,products,on=['aisle_id','aisle_id'])
tab2 = pd.merge(order_products,tab1,on=['product_id','product_id'])
tab3 = pd.merge(orders,tab2,on=['order_id','order_id']) # 找到user_id和aisle之间的关系
# .crosstab()是实现交叉表 data = pd.crosstab(tab3["user_id"],tab3["aisle"])
data = tab[:10000] # 偷懒减数【手动滑稽】

下一步是进行降维了

# PCA降维

# 实例化转换器
transfer = PCA(n_components=0.95) # 调用函数
data_new = transfer.fit_transform(data)

接着就是进行模型训练了

# 预估器流程

estimator = KMeans(n_clusters=3) # n_clusters是用来决定分类的类别数
estimator.fit(data_new)

最后就是模型评估啦

# 模型评估

# 查看轮廓系数
print("轮廓系数为:",silhouette_score(data_new,estimator.predict(data_new)))

以上就是作者对于本项目的一些基本实现啦

(ps:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!)

采用PCA算法&KMeans算法来实现用户对物品类别的喜好细分(菜篮子分析)(附带数据集下载)的更多相关文章

  1. 12_PCA之探究用户对物品类别的喜好细分降维

    案例: 探究:用户对物品类别的喜好细分降维. 背景:把用户分成几个类别,分类的依据是用户购买了哪些物品. 先看商品products.csv数据,有product_id,product_name,ais ...

  2. 数据聚类算法-K-means算法

    深入浅出K-Means算法 摘要: 在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. K-Mea ...

  3. 数据挖掘算法——K-means算法

    k-means中文称为K均值聚类算法,在1967年就被提出  所谓聚类就是将物理或者抽象对象的集合分组成为由类似的对象组成的多个簇的过程 聚类生成的组成为簇 簇内部任意两个对象之间具有较高的相似度,不 ...

  4. 数据挖掘经典算法——K-means算法

    算法描述 K-means算法是一种被广泛使用的基于划分的聚类算法,目的是将n个对象会分成k个簇.算法的具体描述如下: 随机选取k个对象作为簇中心: Do 计算所有对象到这k个簇中心的距离,将距离最近的 ...

  5. 算法 - k-means算法

    一.聚类思想 所谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征,如下图所示:     根据样本之间的距离或者说是相似性(亲疏性),把 ...

  6. [聚类算法] K-means 算法

    聚类 和 k-means简单概括. 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起. k-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据它们的属性分为 ...

  7. GMM算法k-means算法的比较

    1.EM算法 GMM算法是EM算法族的一个具体例子. EM算法解决的问题是:要对数据进行聚类,假定数据服从杂合的几个概率分布,分布的具体参数未知,涉及到的随机变量有两组,其中一组可观测另一组不可观测. ...

  8. 机器学习sklearn19.0聚类算法——Kmeans算法

    一.关于聚类及相似度.距离的知识点 二.k-means算法思想与流程 三.sklearn中对于kmeans算法的参数 四.代码示例以及应用的知识点简介 (1)make_blobs:聚类数据生成器 sk ...

  9. 【转】 聚类算法-Kmeans算法的简单实现

    1. 聚类与分类的区别: 首先要来了解的一个概念就是聚类,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它“这个东西 ...

  10. 聚类算法——KMEANS算法

    聚类概念 无监督问题:我们手里没有标签 聚类:相似的东西分到一组 难点:如何评估,如何调参 基本概念 要得到簇的个数,需要指定K值 质心:均值,即向量各维取平均即可 距离的度量:常用欧几里得距离和余弦 ...

随机推荐

  1. HTML中meta标签的那些属性

    <meta> 标签是 HTML 中用于描述网页元信息的元素.它位于 <head> 部分,不会显示在页面内容中,但对于浏览器.搜索引擎等具有重要作用.主要作用有:定义文档的字符编 ...

  2. SSL 证书安装使用中遇到的常见问题

    为了实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或篡改,SSL证书已被各政企网站广泛应用.然而在部署和使用SSL证书的过程中,我们经常会遇到一些措手不及的问题,一旦处理不当,就会让网 ...

  3. 2023-04-17:设计一个包含一些单词的特殊词典,并能够通过前缀和后缀来检索单词。 实现 WordFilter 类: WordFilter(string[] words) 使用词典中的单词 wor

    2023-04-17:设计一个包含一些单词的特殊词典,并能够通过前缀和后缀来检索单词. 实现 WordFilter 类: WordFilter(string[] words) 使用词典中的单词 wor ...

  4. Django中render()函数和redirect()函数

    render() 作用:render是渲染变量(结合一个给定的模板和一个给定的上下文字典)在模板中,通俗点将context的内容,加载进模板中定义的文件,通过浏览器渲染呈现. render()方法常用 ...

  5. getattr函数

    函数说明 getattr(object, name, default=None) object:类实例 name:str 属性名 default:str 如果没有查找到,用该值替代 用法实现反射,主要 ...

  6. Java程序设计复习提纲(上:入门语法)

    目录 上: 基本语法与编译运行 数据类型和关键字 常用语法 数组与字符串 异常处理 中: 面向对象和类 下: 图形界面 基本语法与编译运行 java没有指针没有全局变量 Java源代码文件的后缀名是& ...

  7. nginx: [emerg] https protocol requires SSL support in /usr/local/nginx/conf/nginx.conf:50

    最近在nginx中配置一个443端口 一.安装nginx 首先得先安装个nginx 1.安装依赖包 # 一键安装上面四个依赖 [root@dex ~]# yum -y install gcc zlib ...

  8. 神经网络初步(Neural Network)——思想 具体实例以及代码实现

    在前面我们详细的讨论过softmax损失函数以及SVM损失函数,以及应用了支持向量机进行图片分类的任务,不妨先复习一下支持向量机相关的思想内核:支持向量机想要寻求一组映射关系f(x)=wx+b,先将每 ...

  9. 2023-06-15:说一说Redis的Key和Value的数据结构组织?

    2023-06-15:说一说Redis的Key和Value的数据结构组织? 答案2023-06-15: 全局哈希表 Redis使用哈希表作为保存键值对的数据结构,通过哈希函数将Key映射为哈希表中的一 ...

  10. 【HMS Core】【In-App Purchases】应用内支付热门FAQ合集

    ​近期收到很多开发者关于应用内支付服务的相关问题,主要集中在以下几个方面,今天和大家分享一下,希望给大家的开发集成带来帮助. [问题描述1] 近期,很多开发者收到关于"全面限制HTTP类型回 ...