AI应用实战课学习总结(8)降维算法分析实战
大家好,我是Edison。
最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。
今天是我们的第8站,一起了解下降维算法基本概念 以及 通过降维算法辅助商品品类分析的案例。
降维问题介绍
降维算法是用来减少数据特征数量的技术,在减少数据特征的同时,它还能够保持数据的结构和信息,降低多维数据分析和可视化的难度。
比如,下面图中左边的三维图像不利于我们做可视化,那么将特征降维到两个后,基于这两个维度就可以清晰地可视化和做分析了。
画外音>在机器学习中,维度越多,数据集也就越复杂。业界也将其称为“维度灾难”。
降维算法经常用于以下场景:
数据可视化:如何便于图形展示做数据分析
特征选择:如何在一大堆特征中选择出最重要的几个特征
数据压缩:降低了数据维度后还保留了数据的结构和信息,也就对数据做了压缩
噪声消除:有些特征可能是冗余的,如何讲这些特征消除掉
常见降维算法
主要的降维算法如下图所示分为两类:一类是做噪声消除,保存最重要的特征,特征值不变只是减少;如下图中的左边部分。另一类是将原来的多个维度降低为指定的几个,是将原来的多个维度进行重新组合。如下图中右边的部分。
其中,最常见的用于降维的线性算法是PCA。
PCA全名Principal Component Analysis(翻译:主成分分析),它是一种无监督学习算法,主要通过找到数据的主成分(即生成几个新特征,这些新特征就被认为是数据集的主成分),来减少数据的维数。
那么,日常实践中如何选择主要的降维算法呢?如下图所示,取决于是否是监督学习,是否有标签,以及 数据是否具有线性关系。
下面的案例,我们以无监督学习的PCA算法为例继续。
商品品类分析案例
问题背景:
某商家记录了旗下30种商品的市场分析数据
数据包括:销售增长率、市场占有率、渠道成熟度、用户好评度等
问题目标:
根据市场分析数据,观察哪些商品具有共性(或许可以归为同一类)?
商品品类分析代码实战
Step1 读取数据
# 导入Pandas数据处理库
import pandas as pd # 导入品类降维数据集
data = pd.read_csv('products-demo.csv')
data.head()
输出的数据如下图所示,可以看到4个主要的特征:销售增长率、市场占有率、渠道成熟度 和 用户好评度。
Step2 使用PCA算法进行降维
这里我们使用sklearn提供的PCA算法来将4个特征 降维到 2个特征,便于我们后续做可视化。
# 导入SKLearn中的PCA工具
from sklearn.decomposition import PCA # 指定需要进行降维的特征
features = data[['销售增长率', '市场占有率',
'渠道成熟度', '用户好评度']] # 用PCA算法进行降维,并指定最终维度为2,便于可视化
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(features)
Step3 绘制散点图辅助品类分析
# 导入Matplotlib中的绘图工具pyplot
import matplotlib.pyplot as plt
# 设置字体为SimHei,以正常显示中文标签
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['font.sans-serif']=['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False # 创建一个新的图形,设置大小为12x8
plt.figure(figsize=(12, 8)) # 在图上绘制降维后的数据点
plt.scatter(reduced_data[:, 0],
reduced_data[:, 1],
c=data['品类'], # 设置颜色
cmap='rainbow', # 设置颜色映射
edgecolor='k', # 设置数据点边界颜色
s=75 # 设置点的大小
) # 为每个数据点添加注释,用商品名标记每个点
offset = 0.02 # 我增加了一个偏移量,使得标签离数据点有一些距离
for i, name in enumerate(data['商品']):
plt.annotate(name, (reduced_data[i, 0] + offset,
reduced_data[i, 1] + offset),
fontsize=9, alpha=0.7) # 设置图的标题和x、y轴的标签
plt.title('商品数据的PCA降维')
plt.xlabel('主成分 1')
plt.ylabel('主成分 2') # 去掉网格
plt.grid(False) # 显示图形
plt.show()
降维后只有2个主成分的结果如下所示:可以看到它将数据中的所有商品分成了三个品类,紫色的商品相较其他颜色的商品品类更为接近,因为都是水果或饮料。
小结
本文介绍了机器学习中的降维场景问题,常用的降维算法 以及 如何选择降维算法,最后通过一个商品品类分析的案例做了一次实战,相信对你理解降维应用应该有所帮助。
在大数据和GPU时代,深度学习已经成为了标配,那么下一篇,我们就开始进入深度学习!
推荐学习
黄佳,《AI应用实战课》(课程)
黄佳,《图解GPT:大模型是如何构建的》(图书)
黄佳,《动手做AI Agent》(图书)
AI应用实战课学习总结(8)降维算法分析实战的更多相关文章
- DDD实战课--学习笔记
目录 学好了DDD,你能做什么? 领域驱动设计:微服务设计为什么要选择DDD? 领域.子域.核心域.通用域和支撑域:傻傻分不清? 限界上下文:定义领域边界的利器 实体和值对象:从领域模型的基础单元看系 ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- AI面试必备/深度学习100问1-50题答案解析
AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习 转载:https://blog.csdn.net ...
- [AI开发]将深度学习技术应用到实际项目
本文介绍如何将基于深度学习的目标检测算法应用到具体的项目开发中,体现深度学习技术在实际生产中的价值,算是AI算法的一个落地实现.本文算法部分可以参见前面几篇博客: [AI开发]Python+Tenso ...
- Python第十课学习
Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...
- Python第九课学习
Python第九课学习 数据结构: 深浅拷贝 集合set 函数: 概念 创建 参数 return 定义域 www.cnblogs.com/yuanchenqi/articles/5782764.htm ...
- Python第八课学习
Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...
- jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件
jQuery框架学习第一天:开始认识jQueryjQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQuer ...
- 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 http://phunter.farbox.com/post/mxnet-tutorial1 用MXnet实战深度学 ...
随机推荐
- 在 PHP 中,原生并没有提供内置的定时器机制,定时触发的守护进程,其中一个常见的方式是使用循环和时间戳来检查触发时间。自定义事件触发
<?php class TimerDaemon { private $logfile; private $fp; private $triggerInterval; // 触发间隔,以秒为单位 ...
- 要命的DRG成本核算!
改开几十年的三座大山之一,鬼见愁的问题.会随着DRG的推进而让平头老百姓过上翻身做主的日子呢!? 对于DRG,首先医保部门需要了解病种成本状况,确定给你结算多少银子.第二,咱们医院靠医保吃饭,那就更需 ...
- 为Avalonia应用添加图标
前言 为了让自己开发的应用更加好看,开发者往往需要增加一些图标. 本文分享在开发Avalonia应用时如何为应用增加图标,希望可以帮助到正在学习使用Avalonia并有此需求的开发者. 实践 经过搜索 ...
- Hyperledger Fabric - 自定义network.sh脚本
引言:依据hyperledger fabric提供的测试网络脚本搭建自己的网络环境 该系列参考:https://blog.csdn.net/ling1998?type=blog 执行./network ...
- Window7搭建Kafka环境总结
1.安装zooeleeper 下载链接:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/ 安装步骤如下: 1)解压zookeepe ...
- robotframework之数据驱动
用robotframework做接口自动化时,如果执行用例条数比较多时,需要把用例存到表格当中,通过数据驱动读取表格内容. 一.引入第三方库 数据驱动的第三方库:DataDriver 直接在setti ...
- 1、HTML常用标签
此文章为学习笔记以下内容为HTML常用标签. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset=&quo ...
- http2和http3
HTTP/2 和 HTTP/3 是 HTTP 协议的升级版本,主要为了解决 HTTP/1.x 协议的性能瓶颈和安全性问题.以下是它们的主要目标和解决的问题: HTTP/2 的主要目标和解决的问题 1. ...
- Spring纯注解的事务管理
Spring纯注解的事务管理 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- SQL 日常练习 (十四)
最近的项目都比较忙, 没太有时间来做练习, 不过 sql 这块, 还是始终要保持良好的手感, 我已经渐渐感觉到, 随着写得越来越多, 当然不只是在这里, 更多是在工作中, 不过涉及信息安全不能共享. ...