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

全文链接: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.rhkb.cn/news/410414.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现流程化办公,可专注于开源可视化报表设计器!

近日,有很多粉丝和朋友们会问我们关于低代码技术平台、开源可视化报表设计器的相关内容和问题。其实,在流程化办公新时代,愿意启用新软件平台的客户朋友会收获市场红利,也会站在前沿之地上斩获更多市场份额。今天我们就一起来了解…

随机森林与线性回归

集成学习方法之随机森林 集成学习(Ensemble Learning)是一种通过组合多个分类器来提高预测性能的方法。主要分为三种类型:Bagging、Boosting和Stacking。以下是集成学习的基本步骤和概念: 1数据采样:从训练集中有放回地随机抽取…

【渗透测试】ATTCK靶场一,phpmyadmin,域渗透,内网横向移动攻略

前言 博客主页:h0ack1r丶羽~ 从0到1~ VulnStack,作为红日安全团队匠心打造的知识平台,其独特优势在于全面模拟了国内企业的实际业务场景,涵盖了CMS、漏洞管理及域管理等核心要素。这一设计理念源于红日安全团队对ATT&CK红队评…

斯坦福大学cs231n (图像分类)

1.介绍 当作图像分类时,分类系统接收一些分类图像,比如猫咪。并且系统清楚了一些已经确定了分类或者标签的集合。那么,计算机的工作就是根据图片,给他分配一些固定的分类或者标签。 对于一个计算机来说,这是一个非常…

springsecurity 在web中如何获取用户信息(后端/前端)

一、SecurityContextHolder 是什么 SecurityContextHolder用来获取登录之后用户信息。Spring Security 会将登录用户数据保存在Session中。但是,为了使用方便,Spring Security在此基础上还做了一些改进,其中最主要的一个变化就是线程绑定。当用户登录成功…

FastGPT如何增减用户

背景 开源版本的FastGPT默认只有一个超级用户root,为了更好地管理应用和知识库,可以通过操作MongoDB数据库来增加新的用户和团队。 所需环境 已安装并运行的FastGPT实例MongoDB客户端工具(如Mongo Shell或Robo 3T等) 操作步骤…

数据库三大范式

三大范式 一种数据库设计理念,意义在于降低耦合 写代码 高内聚 低耦合 一个表只有一个主键 一个主键可以是多列 ‌第一范式(1NF)‌:要求数据库表的每一列都是不可分割的原子数据项,即列中存储的数据是最小的数据单元&…

并发服务器

一、服务器 1.单循环服务器:同一时刻,只能处理一个客户端的任务; 2.并发服务器:同一时刻,可以处理多个客户端的任务; 3.TCP并发服务器: (1)多进程: (2&a…

搭建面向切面编程项目

此项目在整合Mybatis基础上修改&#xff0c;可参考主页的整合Mybatis文章 注解版本 第一步 引入maven坐标 <!-- 切面编程所需jar包--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId>…

Windows 11系统 Eclipse 2024版本安装教程和环境搭建

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 Eclipse 是一个开源的集成开发环境 (IDE)&#xff0c;主要用于 Java 开发&#xff0c;但也支持其他编程语言如 C、Python 和 PHP。它提供了丰富的工具和插件&#xff0c;用于编写、调试和管理代码&#x…

安卓13 背光反向 亮度反向 android13 backlight reverse

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 有些设备,在调整背光的时候,会发现,背光调大,显示亮度反而变暗,背光调小,亮度变亮。这是由于PWM背光本身并没有一个标准去决定怎么样算是高亮度,怎么算是低亮度。因…

《黑神话·悟空》是用什么编程语言开发的?

最近火爆全球的国产 3A 大作《黑神话悟空》&#xff0c;你玩了吗&#xff1f;没玩没关系&#xff0c;有人就是对游戏不感冒&#xff0c;我找了个宣发片&#xff0c;一起感受下3A大作的视觉冲击&#xff0c;而且还是我们从小听到大&#xff0c;那猴子&#x1f412;的故事。 ‌‌…

Onnx使用预训练的 ResNet18 模型对输入图像进行分类,并将分类结果显示在图像上

目录 一、整体功能概述 二、函数分析 2.1 resnet() 函数&#xff1a; 2.2 pre_process(img_path) 函数&#xff1a; 2.3 loadOnnx(img_path) 函数&#xff1a; 三、代码执行流程 一、整体功能概述 这段代码实现了一个图像分类系统&#xff0c;使用预训练的 ResNet18 模型对…

设计模式26-解析器模式

设计模式26-解析器模式 动机定义与结构定义结构 C代码推导代码说明 优缺点应用总结 动机 在软件构建过程中&#xff0c;如果某一特定领域的问题比较复杂&#xff0c;类似结构会不断重复的出现。如果使用普通的编程方式来实现&#xff0c;将面临非常频繁的变化。 在这种情况下&…

无人机 PX4 飞控 | ROS应用层开发:指令(字符串)订阅功能

无人机 PX4 飞控 | ROS应用层开发&#xff1a;指令&#xff08;字符串&#xff09;订阅功能 指令&#xff08;字符串&#xff09;订阅功能代码测试 指令&#xff08;字符串&#xff09;订阅功能 为了通过键盘触发mavros 的不同功能&#xff0c;需要实现一个订阅字符串的功能 该…

【国外比较权威的免费的卫星数据网站】

国外比较权威的免费卫星数据网站有多个&#xff0c;它们各自在数据覆盖范围、分辨率、以及数据种类等方面具有不同的特点和优势。以下是一些推荐的网站&#xff1a; NASA Worldview 网址&#xff1a;https://worldview.earthdata.nasa.gov/简介&#xff1a;NASA Worldview显示…

p10 容器的基本命令

首先先拉取一个centos的镜像 命令&#xff1a;docker pull centos 新建容器并且启动 这里直接参考老师的命令吧 接下来是启动并且进入到容器当中去输入docker run -it centos /bin/bash这里是以交互的方式进入到容器中可以看到接下来的ls命令输出的东西就是一个Linux系统最…

Python和MATLAB和R对比敏感度函数导图

&#x1f3af;要点 深度学习网络两种选择的强制选择对比度检测贝叶斯自适应估计对比敏感度函数空间观察对比目标量化视觉皮质感知差异亮度、红/绿值、蓝/黄值色彩空间改变OpenCV图像对比度对比敏感度函数模型空间对比敏感度估计眼球运动医学研究空间时间颜色偏心率对比敏感度函…

mysql 不同版本安装不同端口

安装版本为Mysql8.0.11 先解压&#xff0c;解压后&#xff0c;包下创建my.ini文件内容如下&#xff1a; 注意&#xff1a;端口不能给别的mysql一样 [mysqld]# 设置3306端口port3307 # 自定义设置mysql的安装目录&#xff0c;即解压mysql压缩包的目录basedirD:\\rj\\mysql8.0.…

模型 SPIN销售法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。探需挖痛&#xff0c;引导成交。 1 SPIN销售法的应用 1.1 提升工作效率的软件销售应用SPIN模型 一家制造企业正在寻求提升工作效率的解决方案。他们注意到员工在处理文件和任务时存在效率问题&#…