PLS入门:

1,两篇关键文章

[1] de Jong, S. "SIMPLS: An Alternative Approach to Partial Least Squares Regression." Chemometrics and Intelligent Laboratory Systems. Vol. 18, 1993, pp. 251–263.

[2] Rosipal, R., and N. Kramer. "Overview and Recent Advances in Partial Least Squares." Subspace, Latent Structure and Feature Selection: Statistical and Optimization Perspectives Workshop (SLSFS 2005), Revised Selected Papers (Lecture Notes in Computer Science 3940). Berlin, Germany: Springer-Verlag, 2006, pp. 34–51.

2,PLS回归是一种针对多变量的回归。是线性回归的最高峰。

最简单的函数格式为:[XL,YL] = plsregress(X,Y,ncomp)

这个函数意味着把x对y进行回归,并且选择ncomp个主成分,在所得的结果当中,xl和y l就是预测的回归变量的载荷值,相对的来说x是一个n-by-p的矩阵,它代表的是需要预测的变量。他的每一行表示特定样本的各种各样的观察值,它的每一列表示各种各样的变量。y是一个n乘以m的结局矩阵。在可能的情况下,N应该尽可能的是哑元变量。xl是一个,七乘,以n个主成分的,预测值的载荷,xl里边,每一排,都代表了一系列的系数,这些系数可以组成一个,线性的组合,也就是ps主成分的线性的组合。

举一个例子:

汽油在气缸中正常燃烧时火焰传播速度为10~20m/s,在爆震燃烧时可达1500~2000m/s。后者会使气缸温度剧升,汽油燃烧不完全,机器强烈震动,从而使输出功率下降,机件受损。与辛烷有同一分子方程式的异辛烷,其震爆现象最少,我们便把其辛烷值定为100。正庚烷一捧就爆,我们规定其的辛烷值为0,这两种标准燃料以不同的体积比混合起来,可得到各种不同的抗震性等级的混合液,在发动机工作相同条件下,与待测燃料进行对比。抗震性与样品相等的混合液中所含异辛烷百分数,即为该样品的辛烷值。汽油辛烷值大,抗震性好,质量也好。 把汽油中不同种类碳氢化合物的百分比,与其辛烷值相乘,加起来便是该种汽油的辛烷值。

在1997年,Kalivas, John H等人在论文 "Two Data Sets of Near Infrared Spectra," Chemometrics and Intelligent Laboratory Systems, v.37 (1997) pp.255-259.当中,描述了一个利用Near Infrared Spectra(近红外光谱)来分析汽油辛烷值的论文。利用401nm的近红外光谱,可以对汽油辛烷值。

要测定汽油的辛烷值,如果用震动汽油爆炸的方法,那么需要非常昂贵的设备,而且实验的重复性还很差。当然,也可以使用一系列的蒸馏方法将各种烷烃直接分开。但是雷德蒸馏测试仪,和其它的蒸馏装置非常昂贵。因此用相对廉价切稳定的红外光谱来分析辛烷值就成了一种挑战。但是红外光谱成像较为复杂。有200个峰以上。且不同谱峰间停留时间短。因此要从复杂的峰变换中获得良好的分析,需要采用高级的多元回归的方法。

在matlab中运行以下代码:

load spectra

whos NIR octane

运行的结果为:

Name Size Bytes Class Attributes

NIR 60x401 192480 double

octane 60x1 480 double

这表明有60个样本,每个样本有401个波峰,而他们的辛烷值(因为预先混合)有480个已知的值。我们需要做的事情,就是利用多元回归的方法去把这60*401个矩阵和60*1的矩阵进行回归。回归完成之后,如果以后有新的某种汽油的红外光谱数据,就可以方便的通过上述公式计算出它的辛烷值。

[dummy,h] = sort(octane);

oldorder = get(gcf,'DefaultAxesColorOrder');

set(gcf,'DefaultAxesColorOrder',jet(60));

plot3(repmat(1:401,60,1)',repmat(octane(h),1,401)',NIR(h,:)');

set(gcf,'DefaultAxesColorOrder',oldorder);

xlabel('Wavelength Index'); ylabel('Octane'); axis('tight');

grid on

PLS入门的更多相关文章

  1. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...

  2. webpack入门文档教程

    .octicon{margin-right:2px}a.tabnav-extra:hover{color:#4078c0;text-decoration:none}.tabnav-btn{margin ...

  3. Python爬虫入门之Cookie的使用

    本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...

  4. Python爬虫入门六之Cookie的使用

    大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...

  5. JWT原理 使用(入门篇)

    1.JWT简介 JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换 使用起来就是,由 ...

  6. Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇

    Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Internet与中国 Internet最早来源于美 ...

  7. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  8. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  9. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

随机推荐

  1. autobench 测试笔记

    yum install texinfo yum install gnuplot #下载 http://httperf.googlecode.com/files/httperf-0.9.0.tar.gz ...

  2. SQLite3中自增主键归零方法

    当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表.这个表包含两个列:name和seq.name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当 ...

  3. Visual Studio Code中文文档(一)-快速入门

    Visual Studio Code是一个轻量级但是十分强大的源代码编辑器,重要的是它在Windows, OS X 和Linux操作系统的桌面上均可运行.Visual Studio Code内置了对J ...

  4. [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

    由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...

  5. java selenium (八) Selenium IDE 用法

    Selenium IDE 是Firefox 浏览器的一个插件, 它会记录你对Firefox的操作,并且可以回放它的操作. 用法简单,不过我觉得这个没多大的用处 阅读目录   Selenium IDE ...

  6. react验证码倒计时

    <!DOCTYPE html> <html> <head> <script src="../build/react.js">< ...

  7. JavaScript 开发的45个经典技巧

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...

  8. FTP Proxy Server

    本文将在Linux环境下实现一个简单的FTP代理服务器,主要内容涉及FTP主动/被动模式和简单的Socket编程. 1. 主动模式和被动模式 FTP有两种模式,即主动模式(Active Mode)和被 ...

  9. PDO创建mysql数据库并指定utf8编码

    <?php //PDO创建mysql数据库并指定utf8编码 header('Content-type:text/html; charset=utf-8'); $servername = &qu ...

  10. 【CSS3 入门教程系列】CSS3 Media Queries 实现响应式设计

    在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...