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. FullPage.js – 轻松实现全屏滚动(单页网站)效果

    FullPage.js 是一个简单而易于使用的插件,用来创建全屏滚动网站(也被称为单页网站).除了可以创建全屏滚动效果以外,也可以给网站添加一些水平的滑块效果.能够自适应不同的屏幕尺寸,包括平板电脑和 ...

  2. 自己建二维obj

    经常用到啊 在项目流程管理里面用到

  3. js 根据不同情况引入不同操作

    1.根据分辨率不同引入不同的JS // 根据不同的分辨率引入不同的JS代码 <script> if (screen.width == 1440 && screen.heig ...

  4. 奇淫绝技:Mysql报错注入利用总结分享

    http://xxx.cn/qcwh/content/detail.php?id=330&sid=19&cid=261 and exists(select*from (select*f ...

  5. IIS 7.5最新解析漏洞

    IIS7.5解析漏洞 http://www.cnk0n9.com/fckeditor/editor/fckeditor.html, 上传图片,浏览,上传一个aspx的一句话木马,名字为:a.aspx. ...

  6. VRML开发环境配置

    Vrml真的是个好老的语言啊~~~~ 1. 安装xp虚拟机 vm已经安装过.现在安装xp系统. 发现个网站,msdn itellyou,这里能够下载很多不同的操作系统,都是纯净版的. 选择xp系统:h ...

  7. java基本输入输出练习

    java获取用户的输入分两种,一种是字符的输入,一种是整行的输入,要用到java.io包.对于字符输入来说,使用System.in方法可以输入字符:对于整行的输入,可以使用Scanner类的方法获取整 ...

  8. Python笔记总结week6

    关于创建.调用模块 1.我们创建一个模块commons.py,  并且在文件中写以下三个函数: def login(): print('登录') def logout(): print('退出') d ...

  9. img的onerror事件(瑕疵+解决办法)【转】

    显示图片的时候,为了更好的用户体验,可能会把一些没有图片的内容也用图片样式显示出来,此时我们就要用到IMG的onerror事件了,注意MyEclipse的快捷键alt+/是没有的. < img ...

  10. bom和dom总结

    BOM1.1    介绍    1.BOM是browser object model的缩写,简称浏览器对象模型    2.BOM提供了独立于内容而与浏览器窗口进行交互的对象    3.由于BOM主要用 ...