【视频讲解】主成分分析原理与水果成熟数据实例:Python中PCA-LDA 与卷积神经网络CNN...

news2024/9/21 2:43:12

全文链接:https://tecdat.cn/?p=37450 

分析师:Shixian Ding

主成分分析(PCA)作为数据科学中用于可视化和降维的重要工具,在处理具有大量特征的数据集时非常有用。就像我们难以找到时间阅读一本 1000 页的书,而更倾向于 2 到 3 页的总结以抓住整体概貌一样,当数据集中特征过多时,PCA 可以帮助我们减少维度,提高模型训练效率,同时尽可能保留更多信息点击文末“阅读原文”获取完整代码数据)。

例如在图像处理和基因组研究等常见应用中,往往需要处理成千上万甚至数万个列的数据,此时维度灾难可能成为问题,而 PCA 则能发挥重要作用。

视频

降维中的主成分分析法(PCA)

在众多的数据集中,部分变量的研究价值相对有限。为了实现连贯性分析,降维便成为一种必要手段。而在降维过程中,关键在于尽可能地保留原始数据中的有用信息。接下来,以二维数据降为一维为例,对主成分分析法进行介绍。

3a795bf578460316232c90387efcbf7a.png

由于我们所研究的主要问题在于参数之间的相关关系,而这种相关关系主要体现在各个数据点的相对位置方面。需注意的是,数据点的具体位置并不会对其相关关系产生影响。

6b78c0a3f447bb48473000d6ccf1bc1a.png

接下来,我们需要找出对数据影响最大的方向。为此,不妨设定一个单位向量来表示这个方向。然后,将表示各个数据点的向量向该方向进行投影,并求出方差的表达式。

342b4f91250d073ad91acb2c11352cfe.png

在对数据影响最大的方向上,数据点的分散程度最高,也就是方差最大。在此处,我们运用拉格朗日乘数法来求取最值。从化简后的结果可以看出,我们所寻求的方向正是数据协方差矩阵的特征向量方向。对协方差矩阵进行特征值分解,特征值中较大的那个所对应的特征向量具有重要意义。

一、实现过程

  • 数据标准化:首先对数据进行处理,使其每个特征的均值为零,方差为一。

  • 这样可以确保数据在后续分析中的稳定性和可比性。

  • 协方差矩阵计算:计算标准化后数据的协方差矩阵,该矩阵能够描述特征之间的相关性。

  • 协方差矩阵反映了不同特征之间的关联程度。

  • 特征值分解:对协方差矩阵进行特征值分解,从而得到特征值和对应的特征向量。

  • 特征值和特征向量在主成分分析中起着关键作用。

  • 主成分选择:依据特征值的大小,选取前 k 个特征值对应的特征向量,以此构建新的坐标系。

  • 选择重要的特征向量可以更好地表示数据的主要信息。

  • 数据投影:将原始数据投影到新的坐标系中,进而得到降维后的数据集。

  • 通过投影实现数据的降维处理。

二、应用场景

  • 图像处理:PCA 可用于图像压缩,在减小图像维度的同时保留主要信息。

  • 有助于节省存储空间和提高图像处理效率。

  • 金融分析:在金融领域,PCA 可用于降维和风险管理,能够帮助识别资产之间的相关性。

  • 为金融决策提供有力支持。

三、优点

  • 降维:PCA 能够减小数据的维度,降低存储和计算成本。

  • 提高数据处理的效率。

  • 去冗余:有助于去除冗余信息,提取出最重要的特征。

  • 使数据更加简洁有效。

  • 可视化:可将数据可视化,以便更好地理解数据结构和关系。

  • 增强对数据的直观认识。

四、缺点

  • 信息损失:降维可能会导致信息损失,特别是当较少的主成分用于表示数据时。

  • 需要在降维和信息保留之间进行权衡。

  • 线性假设:PCA 基于线性假设,可能不适用于非线性数据。

  • 对于非线性数据的处理效果有限。

  • 选择主成分数量:需要选择保留的主成分数量,这可能是一个主观过程。

  • 增加了分析的不确定性。

Python主成分分析PCA、线性判别分析LDA、卷积神经网络分类分析水果成熟状态数据|附代码数据

本文对给定数据集进行多类别分类任务时所采用的各种统计和机器学习技术进行了总结。给定数据集包含 20 个类别,对应 10 种不同的水果及其成熟或未成熟状态。为实现分类任务,首先进行数据可视化,接着进行数据预处理,包括异常值检测技术(如局部异常因子和隔离森林)以及数据缩放技术(如标准缩放器和分位数转换器)。

随后运用降维算法如主成分分析(PCA)和线性判别分析(LDA)以及聚类技术,将聚类 ID 作为额外特征添加到数据集中。最后尝试通过深度学习技术(如卷积神经网络)来提高模型准确性。通过交叉验证评估模型性能,并比较其准确性和计算效率。总体而言,本项目展示了统计机器学习技术在多类别分类任务中的有效性,并强调了异常值检测和降维在提高机器学习模型准确性方面的重要性。

数据加载与重构

  1. 导入数据:

df = pd.read_csv('../../codin.csv')df.head()
``````
df = pd.read\_csv('../../co/train.csv')df.head()将字符串标签转换为代码:categories\_list = df\[ 'category' \].astype( 'category' ).cat.categoriesdf\[ 'category' \] = df\[ 'category' \].astype('category').cat.codes
  1. 拆分数据为特征矩阵和目标向量:

X = data\[:,:-1\]y = data\[:,-1\]print(X.shape)print(y)

abb7965b8c44d86cb5e5c5f68d940e24.png

去除异常值

使用隔离森林去除异常值:

from sklearn.ensemble import IsolationForestclf = IsolationForest(max\_samples = 100, random\_state = 1

多层感知机神经网络

  1. 数据标准化:

from  sklearn.preprocessing  import  StandardScalerscaler = StandardScaler()
  1. 进行主成分分析:

from sklearn.decomposition import PCApca = PCA(n\_components=363)pca.fit(nn\_X_train)
  1. 进行线性判别分析:

from  sklearn.discriminant\_analysis  import  LinearDiscriminantAnalysislda = LinearDiscriminantAnalysis(n\_components=19)lda.fit(nn\_X\_train, nn\_y\_train)nn\_X\_train\_lda = lda.transform(nn\_X\_train)nn\_X\_test\_lda = lda.transform(nn\_X\_test)
  1. 构建并训练多层感知机模型:

val\_acc = \[\]pca\_acc = \[\]lda\_acc = \[\]pca\_lda\_acc = \[\]for i in range(40, 44):# clf = MLPClassifier(solver='adam' , alpha=1e-5, random\_state=i, max\_iter=10000, hidden\_layer\_sizes=(300, 60))# clf = MLPClassifier(solver='lbfgs' , alpha=1e-5, random\_state=i, max\_iter=10000, hidden\_layer\_sizes=(300, 59))# best one till nowclf = MLPClassifier(solver='adam' , alpha=1e-5, random\_state=i, max\_iter=10000, hidden\_layer\_sizes=(448, 119, 170, 116))#     clf = MLPClassifier(solver='adam' , alpha=1e-5, random\_state=i, max\_iter=10000, hidden\_layer\_sizes=(300, 60))clf.fit(nn\_X\_train, nn\_y_train)

04c178c788fc6757844411b26213605c.png

  1. 输出不同处理方式下的平均准确率:

print(sum(val\_acc)/len(val\_acc))print(sum(pca\_acc)/len(pca\_acc))print(sum(lda\_acc)/len(lda\_acc))print(sum(pca\_lda\_acc)/len(pca\_lda\_acc))
``````

837c7a28d3c94f65e691e71ea2ef7430.png

卷积神经网络

  1. 特征值归一化:

print(X_train.max())

b7d90dd8ceb49426815e0bfe777edfb4.png

主成分分析PCA

from sklearn.decomposition import PCApca = PCA(n\_components=900)X\_train = pca.fit\_transform(X\_train)X\_test = pca.transform(X\_test)X\_train = X\_train.reshape(X\_train.shape\[0\], 30, 30, 1)X\_test = X\_test.reshape(X\_test.shape\[0\], 30, 30, 1)

LDA

  1. 进行线性判别分析:

# lda = LDA(n\_components=18)# X\_train = lda.fit\_transform(X\_train, y\_train)# X\_test = lda.transform(X_test)

可视化样本

plt.figure(figsize=(10,10))for i in range(25):plt.subplot(5,5,i+1)

863cd657d1bf4ab594da3a3f8e48d2bb.png


点击标题查阅往期内容

b986d913a5f5b2c1bca092a5ef0bc5d3.png

R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标

outside_default.png

左右滑动查看更多

outside_default.png

01

c762737c1e852f825d6aadc7dce3386d.png

02

c44ff4f3f7048f8c841a04b920392290.png

03

9c4d11f42e34e0ef51bf16e7610feb4e.png

04

fb547d6e3b35084ac48d3c334c6b5c2f.png

定义卷积神经网络架构

from tensorflow.keras import regularizersmodel = models.Sequential()model.add(layers.Conv2D(128, (3, 3), activation

75bc0eb436c2a6eb1bbde6e2aa77c6c7.png

00ea2ec9d1efdced5b18331f34b94099.png

编译卷积神经网络

model.compile(optimizer='adam',

e2d56f312dc98750bd2dbf548f783d47.png

绘制准确率与 epoch 的关系图

test\_loss, test\_acc = model.evaluate(X\_test.reshape(X\_test.shape\[0\], 64, 64, 1),  y_test, verbose=2)
``````
10/10 - 0s - loss: 0.9434 - accuracy: 0.7888 - 211ms/epoch - 21ms/step

583f0c37bec25da84085150919bdf115.png

评估模型并输出结果

df\_test = pd.read\_csv('../../codes/sml/project/test.csv')df_test.head()

b89f22d82200ab9a14f80cdf420163a8.png

结论

通过对多种机器学习和深度学习技术的应用与比较,本文展示了不同方法在多类别分类任务中的性能表现。同时,数据预处理中的异常值检测和降维技术对提高模型准确性起到了重要作用。未来,可以进一步探索更先进的模型架构和优化方法,以提高多类别分类任务的性能。

关于分析师

d9560264e97c37bc60f4415afa1b48c8.png

在此对Shixian Ding对本文所作的贡献表示诚挚感谢,他在中国科学技术大学完成了计算机科学与技术(主修)和金融学(辅修)的学位,专注机器学习、数理金融、数据采集、数据挖掘领域。擅长 R 语言、Python、MySQL、Matlab。

27b8e5dfe0fcb91e24fef099419732b5.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!

c5b54b1ac5351f73f818dfa63a50d9f1.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

810984ffaae9fde748b05a312e4335a2.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《PCA主成分分析原理与水果成熟数据实例:Python中PCA-LDA 与卷积神经网络CNN》。

点击标题查阅往期内容

数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况

R语言是否对二分连续变量执行逻辑回归

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

R语言用局部加权回归(Lowess)对logistic逻辑回归诊断和残差分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言用线性模型进行臭氧预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值

R语言Bootstrap的岭回归和自适应LASSO回归可视化

R语言中回归和分类模型选择的性能指标

R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用

R语言 线性混合效应模型实战案例

R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据

R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言建立和可视化混合效应模型mixed effect model

R语言LME4混合效应模型研究教师的受欢迎程度

R语言 线性混合效应模型实战案例

R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

基于R语言的lmer混合线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言分层线性模型案例

R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型

使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据

用SPSS估计HLM多层(层次)线性模型模型

R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R语言有RStan的多维验证性因子分析(CFA)

主成分分析(PCA)原理及R语言实现及分析实例

R语言无监督学习:PCA主成分分析可视化

R语言使用Metropolis- Hasting抽样算法进行逻辑回归

R语言多元Logistic逻辑回归 应用案例

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

R语言基于树的方法:决策树,随机森林,Bagging,增强树

spss modeler用决策树神经网络预测ST的股票

R语言中自编基尼系数的CART回归决策树的实现

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

matlab使用分位数随机森林(QRF)回归树检测异常值

基于随机森林、svm、CNN机器学习的风控欺诈识别模型

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分

e5460031b67cc80dcf70d01b4564b556.jpeg

6a34b372555b4c4a763e8a503b599d1e.png

abdefe22f2b555275154f869cfd4475c.png

17c62d69f3af13b773b0caabf9058851.jpeg

d77a38e78c7eb4577f4e7763a9634784.png

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

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

相关文章

jpg免费转换成pdf?jpg和pdf谁更好?图片转pdf的优势总结!

jpg免费转换成pdf?jpg和pdf谁更好?我们经常需要将JPG图片转换为PDF文档。无论是个人照片管理、证件扫描,还是商业和行政领域的文档整理、合同协议、电子邮件附件,以及教育领域的课件制作和论文报告,都可以通过JPG到PDF…

JVM - 1.类加载子系统

1.类加载子系统 1.作用 1.负责从文件系统或网络中加载字节码(.class)文件,即将物理磁盘上的字节码文件加载到内存中,生成供程序使用的类对象 2.字节码文件要求在文件开头有特定的文件标识(CA FE BA BE)3.类加载器(ClassLoader)只负责字节码文件的加载&am…

VS项目写完执行exe隐藏调试用的黑窗口(控制台)

在vs创建完项目,我们只希望运行显示界面,不显示控制台,控制台就是这样的黑色窗口,他可以在我们调试的时候打印一些东西来判断辅助编程。 1、首先修改为窗口模式 2、在你的main文件里最上面加入一行代码: #pragma comme…

android打印编码转换-SAAS本地化及未来之窗行业应用跨平台架构

一、打印转码 1.图片转打印 2.文字转打印 二、代码 package CyberWinPHP.Cyber_Plus;import java.util.Hashtable;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.co…

【文档合集】软件类常用文档整理大全,软件工程,软件项目管理,技术标书方案,模

目的:规范系统开发流程,提高系统开发效率。 立项申请需求分析方案设计方案评审开发调整测试阶段系统培训试运行测试验收投入使用 所有文档过去进主页获取。 获取方式:本文末个人名片直接获取。 软件资料清单列表部分文档清单:工作…

一款免费轻量的CAD看图软件

这款免费CAD看图软件,旨在为用户提供快速查看和处理CAD图纸的能力。该软件以其轻量化、功能全面、操作简便等特点受到用户的欢迎。支持多种CAD文件的快速查看,包括但不限于DWG、DXF等格式,而且不需要安装大型CAD软件即可使用。 主要特点包括…

齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程

齐护离线语音识别模块可免编程自定义学习唤醒词及识别词 固件V2.1 齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程 此固件(程序/功能)为自学习V2.1版本,在基础版本的上去除【变…

HashMap-leetcode总结

为什么用Hashmap? 将两种属性(key,value)具有某种联系,需要保存下来 随时读取是否存在且通过一方获取它对应值 数据结构 一数值value经过hashcode()计算出key,key对应数组位置建立链表 HashMap常用方法 1、HashMap的初始化 Hash…

4820道西医综合真题西医真题ACCESS\EXCEL数据库

本题库内容源自某出版物《西医综合真题考点还原与答案解析》,包含4千多道真题。这个数据库包含3个表,一个是分类表(SECTION_BEAN),一个是题库主表(QUESTION_INFO_BEAN),一个是选项表…

新版本 | GreatSQL 8.0.32-26全新发布 增强“四高”诸多新特性

近日,GreatSQL开源数据库社区正式发布 GreatSQL 8.0.32-26新版本,在高可用、高性能、高兼容、高安全等诸多方面进行了特性增强,修复多个缺陷,并详细说明了多个典型应用场景下,升级/降级到GreatSQL 8.0.32-26的操作策略…

从心理学的角度,探究一下人类为什么爱玩游戏。(缓解压力、社交需求、 获得成就感)

文章目录 引言I 游戏中的美学和文化元素,是影响玩家心理状态的关键因素。音乐美工文化背景II 成年人对游戏的心理需求获得成就感社交需求缓解压力III 心流理论(Flow Theory)解释玩家虽受虐,但也其乐无穷的现象知识扩展: 心流知识扩展: 心流活动知识扩展:得性乐观(Learne…

Koa商城项目-公共组件封装

项目地址 koa_system: 🔥🔥🔥Koa2 React商城项目前端-React Antd前端-Vue2 Element-plus后端-Koa2 Sequelizehttps://gitee.com/ah-ah-bao/koa_system 欢迎大家点击查看,方便的话点一个star~ Vue2Admin和Vue3Admin版本的后台还没有对接…

学习记录:js算法(十二):柱状图中最大的矩形

文章目录 柱状图中最大的矩形我的思路网上思路 总结 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1:上图 输入:…

i.MX6裸机开发(6):GPIO输入——按键查询检测

按键检测使用到GPIO外设的基本输入功能,GPIO外设相关的概念请参考 第四章节汇编点亮LED灯。 本章主要内容: i.MX 6U 在硬件上实现按键消抖 Pro开发板按键原理图和功能分析 在led_rgb_c基础上修改为button 编译代码,实现按键查询控制LED …

OpenAI 通过强大的结构化输出功能增强了其 API

介绍 可以通过打开/关闭 JSON 模式或使用函数调用来创建先前结构化的输出。 大型语言模型 (LLM) 与一般的对话式 UI 非常相似,擅长处理以自然语言呈现的非结构化数据。首先对这些非结构化输入进行组织和处理,然后将其重新转换为自然语言作为结构化响应。…

WIFI驱动开发

Linux 4.9 内核驱动移植 Linux 4.9 BSP 内核驱动 下载驱动后获得驱动的 tar.gz 压缩包 解压后找到如下驱动与文件夹 进入内核,找到 linux-4.9/drivers/net/wireless 文件夹中,新建文件夹aic8800 并且把上面的驱动与文件夹放入刚刚创建好的 aic8800 中。…

动漫二次元漂亮的网站导航HTML5源码

二次元漂亮网站导航HTML源码,页面中还调用了很多外站的图片等链接需自行更换。 动漫二次元漂亮的网站导航HTML5源码

NASA:ARM 增强短波实验(ARESE)太阳辐射数据

目录 简介 摘要 代码 网址推荐 0代码在线构建地图应用 机器学习 ARM Enhanced Shortwave Experiment (ARESE) Solar Radiation Data 简介 ARESE 研究了晴朗和多云大气对太阳辐射的吸收。 测量使用了三个飞机平台:一架高空载人埃格雷特飞机、一架装有仪器的双…

百度地图SDK Android版开发 8 覆盖物示例2动画

百度地图SDK Android版开发 8 覆盖物示例2动画 前言动画相关的类和接口帧动画MarkerOptions 加载动画MarkerOptionsMarkerOptions.MarkerAnimateType 动画类型 Animation动画MarkerAnimation类及其子类AnimationTransformationRotateAnimationAlphaAnimationScaleAnimationSing…

二、Java变量

文章目录 一、变量介绍1.1 为什么需要变量1.2 变量的介绍1.4 变量使用注意事项 二、号的使用三、数据类型1.1 整数类型1.2 浮点类型1.3 字符类型(char)1.4 布尔类型:boolean 四、编码五、数据类型转换5.1 自动类型转换5.2 强制类型转换5.3 基本数据类型和String类型…