“傻瓜”学计量——主成分分析法PCA(原理+实操)

第8章 Stata主成分分析与因子分析 在进行数据统计分析时,还往往会遇见变量特别多的情况,而且很多时候这些变量之间还存在着很强的相关关系或者说变量之间存在着很强的信息重叠,如果我们直接对数据进行分析,一方面会带来工作量的无畏的加大,另一方面还会出现一些模型应用的错误,于是主成分分析与因子分析应运而生。这两种分析方法的基本思想都是在不损失大量信息的前提下,利用较少的独立变量来替代原来的变量进行进一步的分析。 8.1主成分分析 基本思想是将众多的初始变量整合成少数几个互相无关的主成分变量,而这些新变量尽可能地包含... 阅读详情
AI摘要

本文介绍了主成分分析(PCA)原理,用于解决数据中变量相关性和维度问题。详细讲解了PCA在降维中的过程,包括SVD、SPSS操作步骤、stata和matlab实操,并推荐了相关视频教程以帮助理解和实践PCA。

提纲:

1.PCA原理

2.视频推荐:PCA原理     spass操作      stata操作+matlab实操

1.背景

在一些领域中,需要对大量数据进行观测。但是可能会带来变量之间具有相关性、分别对每个指标分析带来的偏误等问题。因此,要寻找一个合理的方法,在减少需要分析的直白的同时,尽量减少原指标包含的信息缺失。通常做法是对有关联性的变量进行合并,这样就可以用较少的综合指标分别代表存在于各个变量中的各类信息。常用的方法有:主成分分析法、因子分析法。

2.PCA原理详解——数据降维

降维是对高纬度特征数据预处理,去除噪声和不重要的特征,保留下最重要的一些特征的方法。

降维算法主要有:奇异值分解(SVD)奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

PCA(Principal Component Analysis),即主成分分析方法。主要思想是将n维特征映射到k维上,这k维是全新的正交特征,也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

3.推荐视频

3.1.PCA原理

 

用最直观的方式告诉你:什么是主成分分析PCA_哔哩哔哩_bilibili

3.2.PCA spass操作

30分钟掌握主成分分析--SPSS实战操作_哔哩哔哩_bilibili

 主成分操作步骤(实践版)

1、为消除量纲的影响,先对数据进行标准化处理;
2、计算相关系数:一般认为各变量之间的相关系数大于0.3较好;
3、KMO检验和Barlett(巴特利)检验:
(1)KMO取样适切性量数≥0.6较为适宜
(2)sig也即显著性一般小于0.05较为适宜;
4、计算特征值和特征向量:提取特征值大于1且方差贡献率累计达到85%左右

的主成分;

5、识别主成分的贡献率和累计贡献率;

6、计算各个主成分的得分:F1=wnX1+wi2X2+ ... +wmXm

6、计算各个主成分的得分:F1=wnX1+wi2X2+ ... +wimXn

,表示主成分中各个变量的权重,\thetaj为成分矩阵中每个变量对应的

系数,而√\lambdai第i个主成分对应的特征值的开根值;

7、计算综合得分:F=α1F1+α2F2+ ... +αnFn

α,表示第i个主成分的方差百分比

3.3.PCA stata操作+matlab实操

【最全】主成分分析法stata操作讲解+主成分分析法matlab操作讲解+主成分分析法(PCA)理论部分讲解_哔哩哔哩_bilibili

主成分分析法的简介及应用 主成分分析法(Principal Component Analysis,简称PCA)是种常用的数据降维技术,用于将高维数据集转换为低维表示,同时保留数据的主要特征。PCA通过线性变换将原始数据映射到一个新的坐标系中,新坐标系的选择是使得数据在新坐标系下的方差最大化。因此,在使用主成分分析法时需要注意数据的线性可分性和异常值的处理,同时也需要根据具体问题和数据特点来选择合适的降维方法。通过设置不同的主成分个数,可以得到不同的处理结果,从而对主成分分析法的应用效果进行分析和评估。 阅读详情

相关推荐

【机器学习】主成分分析法(PCA)

本文主要讲述了主成分分析法(PCA)的原理和应用。PCA通过选择最重要的特征,将高维数据映射到低维空间,同时保持数据间的关系,实现降维和去噪。通过具体的例子和图示解释了PCA的原理,并比较了两种降维方案,解释了为什么选择将数据映射到x轴上可以得到更好的分类效果。最后强调了在PCA之前需要对所有样本的均值进行归零处理。通过这篇文章,读者可以深入了解PCA的原理和应用,并掌握如何使用PCA进行数据降维和去噪,提高分类效果。

聚焦大数据、AI、数据库三大核心领域,分享 Flink/Spark 实时计算、数仓架构设计、AI 模型落地、数据库性能调优的实战干货,附可直接运行的源码与方案。提供企业技术内训、项目咨询与定制化服务,助力开发者与企业高效搞定数智技术难题。 2866

主成分分析法(PCA)

主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。

weixin_45142381的博客 3万+

【计量经济学学习指南】“入门” vs 进阶版,如何选择你的最佳拍档?

本文详细解析了计量经济学入门与进阶学习的核心差异及适用场景,帮助读者根据自身需求选择合适的学习路径。入门级适合快速建立直觉和基础操作,如Stata三板斧;进阶级则深入矩阵运算和前沿方法,如面板数据和时间序列分析。文章还提供了混合学习策略,如先案例后理论、建立个人代码库等,助力高效掌握计量经济学。

weixin_42568801的博客 324

主成分分析法

定义 主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。 数据降维的作用 降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方

weixin_51711289的博客 6万+

【stata】McFadden‘s R2偏低?这些优化策略助你提升模型拟合度

本文针对Stata用户在逻辑回归中遇到的McFadden's R2偏低问题,提供了系统的诊断与优化策略。首先解释了该指标在社会科学等领域0.1-0.4即属正常的特性,随后指导用户通过检查异常值、共线性和模型设定进行诊断,并给出变量转换、引入新变量及考虑混合Logit等高级模型的实战优化方法。最后强调应结合AIC/BIC、分类表等多指标综合评估模型,避免过度追求单一数值。

weixin_29163857的博客 554

机器学习基线模型与基准测试实战指南

基线模型是机器学习项目中用于评估模型有效性的最简参照标准,其核心在于建立可复现、可解释、最小复杂度的起点。它基于数据分布与任务类型选择零规则、线性模型、决策树或业务规则等典型范式,通过严谨的数据切分(如时间序列感知划分)、标准化特征处理和业务对齐的评估指标(如AUC、F1、KS统计量),揭示数据信息量、特征价值与模型增益本质。基线测试不仅支撑model comparison与performance baseline构建,更驱动特征归因(如SHAP分析)和工程决策优化,在电商推荐、金融风控、智能客服等真实场景

turnRound 478

PCA9422+MKV44F64VLH16嵌入式电源管理设计实战

电源管理在嵌入式系统中不仅是稳压供电,更是影响功耗、热设计、实时响应与系统可靠性的核心环节。其原理涉及硬件状态机时序控制、硬件级故障保护、高精度电池电量计量等关键技术,技术价值在于实现毫秒级确定性电源切换、零软件干预的过流保护及±2%精度库仑计电量估算。典型应用场景包括工业传感器节点、便携式医疗设备和智能仪表等对能效与鲁棒性要求严苛的领域。本文聚焦PCA9422与MKV44F64VLH16协同构建软硬解耦的闭环电源控制系统,深入解析电源状态机(PSM)、I²C鲁棒通信与动态功耗策略等工程实践要点。

weixin_34353714的博客 362

连续投影算法SPA:从原理到Python实现的光谱变量选择

在光谱分析中,高维小样本数据常导致模型过拟合,变量选择是降维和提升模型可解释性的关键手段。连续投影算法(SPA)作为一种经典的前向特征选择方法,通过在向量空间中迭代寻找与已选变量最不共线的波长,有效去除冗余信息,保留最具代表性的特征。该算法不仅适用于近红外光谱的波长优选,也可推广至中红外、拉曼光谱等多元校正场景。结合Python代码实现,SPA能在保留模型精度的同时大幅简化模型结构,为工业在线检测提供低成本解决方案。本文从算法原理出发,详细介绍了SPA的数学基础、完整流程及调参经验,并展示了与PLS、MLR

weixin_33868027的博客 390

PCA9422与PIC18F65K40的I2C电源管理方案设计与调试

在嵌入式系统设计中,电源管理芯片(PMIC)通过I2C接口与主控MCU通信,实现电压转换、充电控制和动态调压。其原理基于寄存器配置,主控通过读写寄存器设定输出电压、电流限制和工作模式,从而提升系统灵活性和能效。这种技术广泛应用于便携设备、数据采集和电池供电场景,尤其适合对成本和确定性要求高的中小批量产品。PCA9422作为高集成度PMIC,结合PIC18F65K40的I2C外设,可构建稳定可靠的电源管理方案,涵盖上电时序、充电配置和低功耗模式,为开发者提供实用参考。

weixin_34072637的博客 308

深入理解PLS_Toolbox21:从数据预处理到模型诊断的实战指南

偏最小二乘法是一种强大的多元统计方法,尤其擅长处理高维、共线性的数据,其核心原理是通过提取潜变量来建立自变量与因变量之间的线性关系模型。该技术在化学计量学、光谱分析和过程监控等领域具有重要价值,能够有效解决传统回归方法在变量多重共线性下的失效问题。在实际应用中,数据预处理是模型稳健性的关键,例如均值中心化和自动缩放能消除量纲影响,而散射校正和导数处理则能有效提取光谱的化学信息。同时,通过交叉验证选择合适的主成分数,并结合载荷图进行化学意义验证,是避免过拟合、确保模型可解释性的核心步骤。本文以PLS_Tool

weixin_42298164的博客 257

Matlab中值滤波接SVD降噪完整实现(含测试数据、结果图与技术文档)

一套开箱即用的信号联合降噪方案,先用中值滤波清除突发性脉冲干扰,再对重构的信号矩阵做奇异值分解,通过保留主导奇异值实现低秩近似,兼顾边缘特征保留与高斯噪声抑制。包内包含主程序SVDjiangzao.m,实测data.mat原始数据,降噪后保存为denoised_data.npy,还提供三张效果对比图(运行结果1.jpg、运行结果3.jpg、svd_denoise_.png),直观展示原始信号、中值滤波中间结果及最终SVD降噪输出。配套PDF文档《基于奇异值分解的频响函数降噪方法.pdf》详解SVD在频响类信

perl8的博客 277

数据科学实战:从学不会到敢上线的七道关卡

数据科学不是算法堆砌,而是连接业务问题与数据决策的工程实践。其核心原理在于将模糊需求转化为可计算、可验证、可行动的数据问题;技术价值体现在降低业务试错成本、加速决策闭环、构建可持续迭代的分析能力;典型应用场景包括用户流失预警、营销ROI优化、供应链异常定位等真实工单驱动任务。关键突破点在于跨越‘数据清洗毛细血管’和‘业务语言翻译’两大鸿沟——前者决定模型能否落地,后者决定结果能否被信任。本文聚焦真实项目中反复验证的七道硬核关卡,覆盖数据溯源、特征业务化、模型可解释性、业务指标验证、漂移监控、文档传承与动作导

weixin_33898233的博客 413

工业相机TEC散热技术:从原理到高精度成像的实战解析

本文深入解析了工业相机TEC散热技术的核心原理与实战应用。通过阐述热电制冷器如何利用帕尔帖效应实现精准温控,有效抑制图像传感器暗电流噪声,从而保障高精度成像的稳定性。文章结合工业场景痛点,提供了从TEC选型、系统集成到控制逻辑的完整设计指南,并分享了不同应用场景下的实战案例,是提升工业视觉系统成像质量的关键技术解析。

weixin_29269441的博客 410

MLAA2.4一款应用机器学习算法的新软件

一款针对纯小白开发的软件,不需要任何数学知识,傻瓜式软件,只需一键就可以利用最火热的机器学习方法做研究!不需要编程,一样可以使用机器学习方法~ 软件称:Machine Learning Algorithm Application(MLAA) 软件版本:2.4 软件功能:机器学习算法应用 软件开发者:微信公众号【学术点滴】团队与微信公众号【文献计量】团队联合开发 软件用于Window64版本 软件核心功能:机器学习算法的具体应用 软件包含五大功能,分别是: 【1】中文文本分类与预测 【2】英文文本分类与预测

qq_39974284的博客 469

【电弧故障检测算法全解析,电弧串扰问题分析和解决算法】

本文系统分析了电弧故障检测算法及串扰问题解决方案。电弧检测主要采用时频域分析和机器学习方法,通过提取高频噪声、波形畸变等特征实现故障识别。针对电弧串扰问题,提出了自适应滤波、盲源分离和时频联合分析等算法。研究给出了Python和C语言的算法实现示例,包括高频能量检测、过零率计算和陷波滤波器设计。最后指出算法优化方向:实时性提升可采用滑动窗口FFT和硬件加速;抗干扰增强需结合硬件滤波;机器学习扩展可引入随机森林等分类器。该研究为电弧故障检测系统开发提供了完整的技术路线。

syttt的专栏 891

STM32硬件SPI驱动W25Q128实战:从CubeMX配置到DMA高速读写(附完整代码)

本文详细介绍了如何使用STM32硬件SPI驱动W25Q128 Flash存储器,从CubeMX配置到DMA高速读写的完整实战指南。内容包括硬件连接方案、SPI参数优化、DMA配置技巧以及完整代码实现,帮助开发者快速掌握高速稳定的SPI Flash存储解决方案。

weixin_33734785的博客 184

统计学至今无法绕过的必读书和国内外名校视频教程都在这里了!

在当前学术出版界,一个令人瞩目的现象是,多达79%的论文由于统计方法的错误应用而未能成功发表。这不仅削弱了研究的有效性,也降低了论文的接受率。鉴于此,我们精心筛选并汇总了一系列稀缺而精华的统计分析资源,旨在为研究者提供一把攀登科研高峰的利器。这些特别资源汇集了:北卡罗来纳大学教堂山分校(University of North Carolina at Chapel Hill,最美国顶尖的五所公立大学之一)的遗传系前辈Josh Starmer所创的动画讲统计。【视频】(包含英文原版和汉化版)

weixin_42764105的博客 2356

无刷直流电机计算转速

一个霍尔传感器周期(Tms)有两种模式输出方式(3FG/1FG),一个电周期是6个60°电角度,电机磁极数是P,磁极对数PP = P / 2 3FG模式: 1个电周期= 6 * T 1FG模式: 1个电周期= 2 * T 1秒钟电周期个数: 1分钟电周期个数: 1分钟转速: 举例: 假设电机磁极数是8,3FG模式下,霍尔周期700us,计算该条件下转速 ...

meimiaorenshengqq的博客 9671

隐变量建模三把刀:EM、贝叶斯与VAE的工程选型指南

隐变量建模是处理不可观测驱动因素的核心技术,其本质在于弥合观测数据与完整数据之间的统计鸿沟。不同于缺失值填补或特征工程,隐变量代表系统内在机制——如用户信任度、行为动机等无法直接测量但深刻影响结果的连续潜结构。EM算法通过期望-最大化迭代实现确定性逼近,适合大规模、需快速点估计的场景;贝叶斯估计将先验知识与观测证据融合,输出带置信度的概率推断,支撑高风险业务决策;变分自编码器(VAE)则转向表征学习,构建可生成、可插值的低维隐空间,适用于模式发现与合成数据生成。三者并非替代关系,而是针对‘解释性’‘不确定性

weixin_33971977的博客 363

基于ANSYS的电磁兼容仿真教程

最近,在做某系统的EMC仿真,使用ANSYS套件,对仿真学习做简要记录。本书简介与目录如下:本书配套有:视频教程+工程源文件+彩色仿真图片,下载链接如下:(审核中)第1章 基础知识1.1 电磁兼容基础​​​MS2、EMC三要素:3、 国际无线电干扰特别委员会标准:CISPR标准4、电磁兼容测试认证:传导发射(CE)、传导敏感度(CS)、辐射发射(RE)和辐射敏感度(RS)测试。

weixin_42508010的博客 2051

linux那些事之numa balance

numa balance numa balance是页迁移技术最重要也是最开始使用应用的技术,主要是为解决由于调度器进程在两个node迁移造成访问内存性能问题。 numba balance通过页迁移技术,将不在运行节点的内存迁移到所运行的节点上。对应numa balance要注意几点: 防止进程在两个节点之前来回切换造成频繁进行页迁移(ping pang现场)从而影响性能。numa balance本身就是为了提高性能,不能因为造成频繁页迁移而对性能进行一个反向优化。 多个线程分布在不同线程 访.

weixin_42730667的博客 3907

TPOT自动化机器学习:基于遗传编程的可解释pipeline优化

自动化机器学习(AutoML)旨在降低模型开发门槛,其核心在于对数据预处理、特征工程与算法选择的联合优化。传统方法如网格搜索和贝叶斯优化仅在固定结构内调参,而TPOT采用遗传编程(GP)技术,将整个scikit-learn pipeline建模为可进化的树形结构,实现拓扑级自动探索。这种机制兼顾全局搜索鲁棒性与结果可解释性,输出标准Python代码而非黑盒服务,天然支持复现、调试与工程集成。适用于快速构建baseline、验证手工pipeline上限及教学实践等场景,是面向生产环境的轻量级AutoML代表。

cuiji1279的博客 398

【乐企-业务篇】乐企开票具体代码实现

【代码】【乐企-业务篇】乐企开票具体代码实现。

九七的博客 493

因子分析全流程实战:从机制还原到业务落地

因子分析是一种潜变量建模技术,旨在从可观测变量中识别不可见但驱动行为的公共因子,其核心原理是通过协方差结构还原数据背后的生成机制,而非仅做数学降维。相比主成分分析(PCA)侧重方差压缩,因子分析强调可解释性与理论支撑,具备更强的机制推断价值。在用户画像构建、产品体验归因、服务策略优化等场景中,它能将杂乱行为指标收敛为‘内容沉浸度’‘社交活跃度’等高阶业务维度。本文聚焦因子分析全流程,覆盖问题诊断、变量筛选、旋转解读、信效度验证及因子得分应用,并深度融合psych包实操与业务对齐方法,助力数据分析师、产品经理

weixin_29051245的博客 270

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

相关系数全解析:从概念、计算到应用与陷阱规避

在数据分析与机器学习领域,理解变量间的关系是基础。相关系数作为量化两个变量线性关系强度与方向的核心指标,其本质是协方差的标准化,旨在消除量纲影响,提供-1到1之间的可比度量。掌握其原理不仅能评估关联强度,更是进行特征工程、模型诊断和探索性数据分析的关键。在实际应用中,需根据数据特性(如正态性、异常值)选择皮尔逊、斯皮尔曼或肯德尔等不同方法,并警惕“相关不等于因果”这一根本原则。通过Python或Excel等工具可快速计算,并结合散点图与显著性检验进行解读。正确应用相关系数,能有效支撑金融风险建模、用户行为分

weixin_34221775的博客 396

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: “傻瓜”学计量——数据缺失如何解决?(插值法stata指令)
下一篇: “傻瓜”学计量——熵值法(原理+excel stata python实现)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值