PLS 偏最小二乘算法 demo <一>

7 篇文章 0 订阅
5 篇文章 0 订阅

现在网上大部分都是PLS的一些方法,下面我具体的展示一下代码,

分为四个部分,demo(演示),PLS_B(训练B值),PRE(预测部分),DRAW(画图)总共四个部分,先来第一部分,具体的算法原理网上很多教程,这里就不多说了,直接上代码。

<span style="color:#3366ff;"><strong><span style="font-size:24px;">#encoding:utf-8

#从其他文件中导入需要的包和类
from Train_erro import Erro
from Drawing import drawing
import scipy.io as sio
from pls_B import PLS
import numpy as np
from sklearn import cross_validation

# 读取需要使用的光谱数据
# fname = sio.loadmat(r"G:\data\NIRtablet.mat")
fname = sio.loadmat(r"G:\data\normal_NIR\normal_NIRtablet.mat")
print fname.keys()
    
X = fname["X"]
Y = fname["Y"]
# 将光谱数据进行划分,划分为训练部分和测试部分
X_train, X_test,Y_train, Y_test = cross_validation.train_test_split(X,Y,test_size=0.2, random_state=0)
# fname = sio.loadmat(r"G:\data\train_data.mat")
# X_train, X_test,Y_train, Y_test = fname['train_x'], fname['test_x'], fname['train_y'], fname['test_y']  

#将数据进行中心化处理
Xtrainmean = np.mean(X_train, axis=0)
Ytrainmean = np.mean(Y_train, axis=0)
ytestmean = np.mean(Y_test, axis=0)
xtestmean = np.mean(X_test, axis=0)
X_center = np.subtract(X_train, Xtrainmean)
Y_center = np.subtract(Y_train, Ytrainmean)
xtest_center = np.subtract(X_test, xtestmean)                              
ytest_center = np.subtract(Y_test,ytestmean)

#设置要选取的主成分个数, 一般需要交叉验证,这点直接给出
pc = 5

#调用PLSS算法,得到计算后的B
plss = PLS()
B = plss.comput(pc, X_center, Y_center)

#进行训练,调用训练的函数
train_erro, return_Y = Erro(pc, X_center, Y_train, B, Ytrainmean)

#进行预测,调用预测函数
test_erro, return_y = Erro(pc, xtest_center, Y_test, B, ytestmean)

#画图
draw=drawing()
# 散点图
draw.Distribution(pc, Y_train, return_Y, Y_test, return_y)
# 折线图
# draw.Distribution(pc, Y_test, return_y)
draw.Line_chart(train_erro,test_erro )
# draw.Line_chart(test_erro)</span></strong></span><span style="color:#ff0000;"><strong><span style="font-size:24px;">
</span></strong>
</span>

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值