应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析

本文对偏最小二乘法(PLS——Partial Least Squares Regression,也缩写为PLSR)的算法原理进行了简单的推导,并结合汽油近红外光谱举例了算法具体应用的实例。原本写了word版本的报告,实在是懒得再在这边写一遍,所以偷懒直接放图片过来了,最后贴上了原程序。

算法原理部分参考了没有注明作者的一篇论文..


应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第1张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第2张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第3张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第4张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第5张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第6张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第7张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第8张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第9张图片

应用偏最小二乘回归(PLSR)对NIR光谱与样本中RON含量进行定量分析_第10张图片

import csv
from sklearn import preprocessing
from sklearn.cross_validation import train_test_split
from sklearn.decomposition import RandomizedPCA
from sklearn.cross_decomposition import PLSRegression 
import numpy as np
import math
import matplotlib.pyplot as plt

A = np.loadtxt('A.csv',delimiter=',')#读入数据
print A.shape
Olefin= np.loadtxt('Olefin.csv',delimiter=',')
print Olefin.shape
RON = np.loadtxt('RON.csv',delimiter=',')
print RON.shape
OR = np.array((RON,Olefin)).T
print OR.shape
nm = np.loadtxt('nm.csv',delimiter=',')

def error(y_predict,y_test):#定义计算误差平方和函数
    errs = []
    for i in range(len(y_predict)):
        e = (y_predict[i]-y_test[i])**2
        errs.append(e)
    return sum(errs)

x_train, x_test, y_train, y_test = train_test_split(
    A, RON, test_size=0.3)#划分训练集测试集
x_train_st = preprocessing.scale(x_train)#数据标准化
n_components = 0

while n_components


你可能感兴趣的:(学习笔记)