机器学习实战:Python基于PCA主成分分析进行降维分类(七)

news2024/11/19 23:18:20

文章目录

    • 1 前言
      • 1.1 主成分分析的介绍
      • 1.2 主成分分析的应用[](https://chat.openai.com/ "openai")
    • 2 Mushroom分类数据演示
      • 2.1 导入函数
      • 2.2 导入数据
      • 2.3 PCA可视化
      • 2.4 PCA散点图
      • 2.5 PCA散点图
    • 3 讨论

1 前言

1.1 主成分分析的介绍

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术,通过线性变换将高维数据映射到低维空间中。其原理是寻找最能代表原始数据的几个主成分,并保留大部分的数据方差。

PCA的目的是通过线性变换将原始数据转化为一组新的变量,这些新变量是原始变量的线性组合,且互相独立。这些新变量称为主成分,第一个主成分方差最大,第二个主成分方差次大,以此类推。通过PCA,我们可以将高维数据转化为低维数据,从而实现数据的降维处理。

优点:

  • 数据降维:PCA可以将高维数据转化为低维数据,从而减少了数据的维度,使得数据更容易分析和处理。

  • 特征提取:PCA可以提取出数据的主要特征,抛弃噪声和冗余信息,从而提高了数据的准确性。

  • 数据可视化:PCA可以将高维数据映射到低维空间,从而使得数据可以被可视化。

  • 计算简单:PCA的计算简单,可以应用于大规模数据处理。

缺点:

  • 可能信息损失:PCA通过抛弃一部分信息实现降维,可能会损失一些重要信息。

  • 主成分解释难度:PCA得到的主成分是原始变量的线性组合,其含义不一定很明确,可能需要更深入的领域知识才能解释。

  • 敏感度:PCA对数据的分布比较敏感,当数据的分布不是正态分布时,可能会得到不理想的结果。

  • 计算复杂度:在处理大规模数据时,PCA的计算复杂度可能会很高。

1.2 主成分分析的应用

  1. 金融分析:PCA被广泛应用于股票组合优化、风险管理等方面。通过PCA分析股票之间的相关性,可以得到一些具有代表性的因子,从而构建有效的股票组合。

  2. 图像处理:在图像处理领域,PCA可以应用于人脸识别、图像压缩等方面。通过PCA分析图像数据的主成分,可以得到图像的主要特征,从而实现图像压缩和特征提取等功能。

  3. 生物信息学:在生物信息学领域,PCA可以应用于基因表达分析、蛋白质结构分析等方面。通过PCA分析基因表达数据的主成分,可以发现基因表达的规律和特征,从而进一步研究基因的功能和调控机制。

  4. 信号处理:在信号处理领域,PCA可以应用于语音信号处理、图像噪声处理等方面。通过PCA分析信号数据的主成分,可以减少信号中的噪声和冗余信息,从而提高信号的质量和准确性。

  5. 模式识别:在模式识别领域,PCA可以应用于手写数字识别、语音识别等方面。通过PCA分析数据的主成分,可以提取数据的主要特征,从而实现数据分类和识别等功能。

2 Mushroom分类数据演示

2.1 导入函数

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings("ignore")

2.2 导入数据

下载数据网址:https://www.kaggle.com/datasets/uciml/mushroom-classification?resource=download&select=mushrooms.csv,直接download即可

m_data = pd.read_csv('mushrooms.csv')

# 转换ints
encoder = LabelEncoder()
# 应用到所有列
for col in m_data.columns:
    m_data[col] = encoder.fit_transform(m_data[col])

X_features = m_data.iloc[:,1:23]
y_label = m_data.iloc[:, 0]

**(可选)**缩放数据:

scaler = StandardScaler()
X_features = scaler.fit_transform(X_features)

2.3 PCA可视化

pca = PCA()
pca.fit_transform(X_features)
pca_variance = pca.explained_variance_

plt.figure(figsize=(8, 6))
plt.bar(range(22), pca_variance, alpha=0.5, align='center', label='individual variance')
plt.legend()
plt.ylabel('Variance ratio')
plt.xlabel('Principal components')
plt.show()

挑选特征性最强的或者方差最大的,依图可见大概是17或18个特征可解释涵盖大部分,几乎95%

2.4 PCA散点图

pca2 = PCA(n_components=18)
pca2.fit(X_features)
x_3d = pca2.transform(X_features)

plt.figure(figsize=(8,6))
plt.scatter(x_3d[:,0], x_3d[:,5], c=m_data['class'])
plt.show()

这里根据前18个特征绘制散点图

2.5 PCA散点图

pca3 = PCA(n_components=2)
pca3.fit(X_features)
x_3d = pca3.transform(X_features)

plt.figure(figsize=(8,6))
plt.scatter(x_3d[:,0], x_3d[:,1], c=m_data['class'])
plt.show()

这里是根据前2个特征绘制散点图,可以发现中间部分并没有区分清晰,且右下角聚集的有点奇怪?降维结果显不如依18个特征进行降维的好。

3 讨论

作为一种常用的数据降维技术,主成分分析(PCA)具有很多优点,如降低维数、减少噪声、提高计算效率等。通过PCA分析数据的主要特征,可以实现数据的压缩和特征提取,从而简化数据处理流程和提高计算效率。然而,PCA也有其局限性,如对数据分布假设过于严格、对非线性关系的无法处理等。在实际应用中,需要根据具体问题选择合适的PCA方法和参数,以达到最佳效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Consistency Models

Consistency Models- 理解 问题定义研究动机本文中心论点 相关工作和进展Consistency Models创新点review扩散模型 Consistency Model-Definition一致性模型的定义一致性模型参数化一致性模型采样 Training Consistency Models via DistillationTraining Consistency Models in…

ChatGPT on Notes/Domino

大家好,才是真的好。 随着春节过去,小盆友也开始陆续到幼儿园报到,我们又回来和大家一起继续Notes/Domino传奇之旅。 去年年底ChatGPT横空出世,让大家震惊了一把。 可能有些老Notes/Domino人,还不知道ChatGPT是什么…

MySQL_第11章_数据处理之增删改

第11章_数据处理之增删改 讲师:尚硅谷 - 宋红康(江湖人称:康师傅) 官网: http://www.atguigu.com 1. 插入数据 1.1 实际问题 解决方式:使用 INSERT 语句向表中插入数据。 1.2 方式1:VA…

在OpenHarmony 开发者大会2023,听见百业同鸣

加强开源,助推中国科技强国战略,已经成为中国科技繁荣的必要条件,“十四五”规划中首次提到了“开源”两个字,并明确指出,支持数字技术开源社区等创新联合体的发展。 在中国发展开源,有着拓荒的色彩&#x…

Springsecurity笔记14-18章JWT+Spring Security+redis+mysql 实现认证【动力节点】

15 SpringSecurity 集成thymeleaf 此项目是在springsecurity-12-database-authorization-method 的基础上进行 复制springsecurity-12-database-authorization-method 并重命名为springsecurity-13-thymeleaf 15.1 添加thymeleaf依赖 | <groupId>org.springframewor…

西门子s7-300/400PLC-MMC密码解密

西门子s7-300/400-MMC密码解密 简介西门子加密工具及操作密码验证 简介 目前&#xff0c;市面上或网络上有很多针对s7-200&#xff0c;300&#xff0c;400&#xff0c;1200&#xff0c;1500的密码解密破解软件&#xff0c;但很多时候只能解数字或英文密码&#xff0c;对设置了…

Linux-初学者系列——篇幅5_系统目录相关命令

系统目录相关命令-目录 一、系统目录层级1、目录绝对路径2、目录相对路径3、目录层级结构查看-tree不带任何参数获取目录结构数据信息以树形结构显示目录下的所有内容&#xff08;包含隐藏信息&#xff09;只列出根目录下第一层的目录结构信息只显示目录结构信息中的所有目录信…

ThingsBoard如何自定义topic

1、背景 业务需要,mqtt设备,他们协议和topic都定义好了,想使用tb的mqtt直接接入设备,但是设备的topic和tb规定的不一致,该如何解决呢? 2、要求 设备的topic要求规则是这样的 首先第二点是满足的,网关的发布主题是可以通过tb的设备配置来自定义遥测和属性的topic,问题…

qiankun应用级缓存-多页签缓存

需求&#xff1a; A&#xff1a;主应用 B&#xff1a;子应用 项目框架&#xff1a;vue2 全家桶 qiankun 应用间切换需要保存页面缓存&#xff08;多页签缓存&#xff09;&#xff0c;通过vue keep-alive只能实现页面级缓存&#xff0c;在单独打开的应用里能实现缓存&#xf…

德国申请专利,发明,实用,外观专利申请详细步骤

一、德国专利申请途径 申请人可以向德国专利商标局直接递交申请。要求优先权的情况下根据《保护工业产权巴黎公约》需要在递交中国在先申请的12个月之内向德国专利商标局递交申请。 另外&#xff0c;通过PCT&#xff08;“Patent Cooperation Treaty”&#xff0c;即《专利合作…

【分享】免费的AI绘画网站(5个)

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 随着人工智能技术的不断发展&#xff0c;越来越多的AI绘画软件开始涌现&#xff0c;如果你想要免费享受AI绘画的乐趣&#xff0c;那你可要好好看下面的内容~ Vega AI创作平台 入口&#xff1a;https://rightbrain.art 一款专业的…

AIGC+RPA丨大语言模型赋能实在智能数字员工“超进化”

前不久&#xff0c;全球最大上市咨询公司埃森哲发布2023年技术愿景《When Atoms meet Bits》报告&#xff0c;并在当中深度解析到&#xff1a;生成式AI成为2023年四大技术发展趋势之一。 大型语言模型&#xff08;Large Language Model, LLM&#xff09;领域的研发和布局在国内…

如何科学判断研发团队是否在健康工作?(内附量表)

研发效能管理覆盖了交付速度、质量和价值三个维度&#xff0c;但文化建设、团队氛围和客户协作等其他因素对团队工作的影响又该如何度量和管理呢&#xff1f; LigaAI 在 John Cutler 的一篇分享中找到了答案&#xff1a;团队健康度评分。就像我们都很关心自己的身体健康一样&a…

《程序员面试金典(第6版)》面试题 16.02. 单词频率(哈希法,C++)

题目描述 设计一个方法&#xff0c;找出任意指定单词在一本书中的出现频率。 你的实现应该支持如下操作&#xff1a; WordsFrequency(book)构造函数&#xff0c;参数为字符串数组构成的一本书get(word)查询指定单词在书中出现的频率 示例&#xff1a; WordsFrequency word…

DevEco Studio 3.1 Beta新特性知多少

HUAWEI DevEco Studio是开发HarmonyOS应用及服务的一站式集成开发环境&#xff08;IDE&#xff09;。本次&#xff0c;DevEco Studio 3.1 Beta新增支持当前在市面上新的操作系统&#xff0c;如Windows11、macOS&#xff08;ARM&#xff09;操作系统&#xff0c;还面向HarmonyOS…

4.数据结构(0x3f:从周赛中学算法 2022下)

来自0x3f【从周赛中学算法 - 2022 年周赛题目总结&#xff08;下篇&#xff09;】&#xff1a;https://leetcode.cn/circle/discuss/WR1MJP/ 包括堆&#xff08;优先队列&#xff09;、单调栈、单调队列、字典树、并查集、树状数组、线段树等。 学习这些只是开始&#xff0c;能…

Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击)

原论文&#xff1a;EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES 一般本人的习惯是先看论文熟悉它&#xff0c;然后代码去实现它&#xff0c;这样感觉要好点。因为论文讲解的比较全面和一些实验对比还有很多的引用等&#xff0c;另外大家知道好论文基本都是英文&#xff0c…

【Python】【进阶篇】2、Django MTV和MVC的区别

目录 2、Django MTV和MVC的区别1. MVC设计模式2. MTV设计模式 2、Django MTV和MVC的区别 在上一节《Django是什么》中&#xff0c;我们对 Django 的诞生以及 Web 框架的概念有了基本的了解&#xff0c;本节我们介绍 Django 的设计模式&#xff0c;也就是 MTV。 在 Web 开发领…

Point cloud tools for Matlab(点云学习工具)

Point cloud tools for Matlab (tuwien.ac.at)https://www.geo.tuwien.ac.at/downloads/pg/pctools/pctools.html#PointCloud_class 下载&#xff1a;Download Matlab Code 添加路径 addpath(genpath(D:\MyMatlabCode\pointCloudTools)); pc pointCloud(Lion.xyz); pc.plot…

AI绘画——ChilloutMix模型(现实真人,实现写实逼真的图像)

目录 重要提示&#xff1a;首先&#xff0c;我从不建议再生“真实”人物的图像&#xff0c; 但是&#xff0c;照片“逼真”图像。 本人郑重声明&#xff1a;本模型原则上禁止用于训练基于明星、公众人物肖像的风格模型训练&#xff0c;因为这会带来争议&#xff0c;对AI社区…