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. python的string用法

    s.strip().lstrip().rstrip(',') S.lower() #小写 S.upper() #大写 S.swapcase() #大小写互换 S.capitalize() #首字母大写 ...

  2. #pragma pack(push,1)与#pragma pack(1)的区别

    这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对 ...

  3. Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案

    问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...

  4. 恢复 root 本地无权限 Access denied for user 'root'@'localhost' (using password: NO)

    调试远程的时候,覆盖了本地的权限.导致  本地无法登陆系统表.  远程连接上mysql  执行以下命令恢复. 恢复root  本地管理权限  使用空密码 grant all on *.* to roo ...

  5. Debian/Ubuntu/CentOS VPS安装Net-Speeder并优化

    安装过程: CentOS安装 wget --no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/ ...

  6. 大话设计模式之<一>计算器的深思

    一个面试题引发的深思,试问我们会如何用面向对象的语言写一个计算器,自从我学习了高级编程之后,面向对象的思想也算是深入在我的编程思想里面,从最开始学习的人类到各色人种,及动物到猫狗鼠这样的例子,我甚至听 ...

  7. sass安装记录

    之前曾经安装过一次sass,不过可惜没使用,现在换了电脑重新安装,又上网找了些资料,终于安装成功,现在就当做个记录方便下次安装. 首先 到官网下载个最新版的ruby :http://rubyinsta ...

  8. Javascript中String()与new String()的差异

    这里主要关注的是值类型和引用类型. 我们知道在javascript中的变量在内存中的存储有两种形式,值类型存储和引用类型存储. 通常可以进行值存储的包括  字符串类型,布尔值类型,数字类型,他们都包含 ...

  9. Bootstrap学习笔记(一)

    一.什么是Bootstrap bootstrap是一款css框架,便于响应式设计. 二.怎样使用bootstarp 最常用的方法,在html结构中引入样式表bootstarp.min.css,以及jq ...

  10. C++小项目:directx11图形程序(四):d3dclass

    主菜终于来了.这个d3dclass主要做的工作是dx11图形程序的初始化工作,它将创建显示表面交换链,d3d设备,d3d设备上下文,渲染目标表面,深度模板缓存:设置视口,生成投影矩阵. D3D设备:可 ...