前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据分享|Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化

数据分享|Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化

作者头像
拓端
发布于 2025-04-10 08:30:56
发布于 2025-04-10 08:30:56
20600
代码可运行
举报
文章被收录于专栏:拓端tecdat拓端tecdat
运行总次数:0
代码可运行

全文链接:https://tecdat.cn/?p=34376

PLS,即偏最小二乘(Partial Least Squares),是一种广泛使用的回归技术,用于帮助客户分析近红外光谱数据。

如果您对近红外光谱学有所了解,您肯定知道近红外光谱是一种次级方法,需要将近红外数据校准到所要测量的参数的主要参考数据上。这个校准只需在第一次进行。一旦校准完成且稳健,就可以继续使用近红外数据预测感兴趣参数的值。

PCR只是使用通过PCA得到的若干主成分构建的回归模型。显然,这并不是最佳选择,而PLS就是解决这个问题的方法。

在本文中,我将向您展示如何使用Python构建一个简单的PLS回归模型。以下是我们将要做的概述。

  1. 展示PLS的基本代码
  2. 讨论我们要分析的数据及所需的预处理。我们将使用新鲜桃子水果的近红外光谱查看文末了解数据免费获取方式,其关联的Brix值与PCR相同。这是我们要校准的量。
  3. 我们将使用交叉验证方法构建我们的模型

PLS Python代码

好的,以下是基于Python 3.5.2的运行PLS交叉验证的基本代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入需要的库
from sklearn.metrics import mean_squared_error, r2_score # 导入均方误差和R2得分指标
from sklearn.model_selection import cross_val_predict # 导入交叉验证函数



# 定义PLS对象
pls = PLSReg......
nts=5) # 定义保留5个成分的PLS回归模型



# 拟合数据
pls.f......
 Y) # 将数据拟合到PLS模型中



# 交叉验证
y_cv = cros......
y, cv=10) # 用10折交叉验证计算模型性能



# 计算得分
score = r2_score(y,v) # 计算R2得分
mse = mean_squa......
_cv) # 计算均方误差

为了检查我们的校准效果如何,我们使用通常的指标来衡量。我们通过将交叉验证结果y_cv与已知响应进行比较来评估这些指标。为了优化我们的PLS回归参数(例如预处理步骤和成分数量),我们将跟踪这些指标,最常见的是均方差(MSE)。

还有一件事。在实际代码中,各种数组X, y等通常是从电子表格中读取的numpy数组。因此,您可能需要导入numpy(当然),pandas和其他一些库,我们将在下面看到。

这是Python中PLS回归的基本代码块。看一下数据导入和预处理了。

近红外数据导入和预处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sys import stdout

 ......
from sklearn.metrics import mean_squared_error, r2_score


接下来,让我们导入数据,这些数据保存在一个csv文件中。该数据由50个新鲜桃子的近红外光谱组成。每个光谱都有对应的Brix值(响应变量)。最后,每个光谱在1100 nm到2300 nm之间取600个波长点,步长为2 nm。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = pd.read_csv('./datavalues.csv')

# 获取参考值

y = data[......
lues

# 获取光谱

X = data......
axis=1).values

# 获取波长

wl = np.a......
0,2300,2)

如果需要,数据可以通过主成分分析进行排序,并使用乘法散射校正进行校正,然而,一个简单但有效的去除基线和线性变化的方法是对数据进行二阶导数。让我们这样做并检查结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

# 计算二阶导数

X2 = savgol_fi
......
order = 2,deriv=2)



# 绘制二阶导数图像

plt.figure(fi......
(8,4.5))

with plt.style.context(('ggplot')):
......


    plt.show()

偏移已经消失,数据看起来更加紧密。

偏最小二乘回归

现在是时候优化偏最小二乘回归了。如上所述,我们想要运行一个具有可变组分数的偏最小二乘回归,并在交叉验证中测试其性能。实际上,我们想要找到最小化均方误差的组件数。让我们为此编写一个函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def optimisls_cv(X, ......
=True):



    '''运行包括可变组件数量的偏最小二乘回归,最多到n_comp,并计算均方误差'''



    mse = []
......

    for i in component:

        pls = PLSR......


        # 交叉验证

        y_cv = cross_v......



        comp = 100*(i+1)/n_comp

        # 在同一行上更新状态的技巧

        stdout.write("\r%
......




    # 计算并打印均方误差最小值的位置

    msemin = np......


    stdout.write("\n")



    if plot_components is True:

        ......



            plt.title('PLS')

            plt.xlim(left=-1)



        plt.show()



    # 使用最佳组件数定义PLS对象

    pls_opt = PLSRe......


    # 对整个数据集进行拟合

    pls_opt.......
t.predict(X)



    # 交叉验证

    y_cv = cros......
 cv=10)



    # 计算校准和交叉验证的得分

    score_c = r2......
e(y, y_cv)



    # 计算校准和交叉验证的均方误差

    mse_c = mean_......
y, y_cv)





    # 绘制回归图和评估指标

    rangey = m......
- min(y_c)



    # 将交叉验证和响应拟合为一条直线

    z = np.poly......
'red', edgecolors='k')

        # 绘制最佳拟合线

        ax.plot(np.p......
, linewidth=1)

        # 绘制理想的1:1线

        ax.plot(y, ......
idth=1)





        plt.show()



    return

这个函数首先运行了一个循环,通过偏最小二乘回归的组件数计算预测的均方误差。其次,它找到最小化均方误差的组件数,并使用该值再次运行偏最小二乘回归。在第二次计算中,计算了一堆指标并将其打印出来。

让我们通过将最大组件数设置为40来运行此函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
optimise......
, plot_components=True)

第一个图表是均方误差作为组件数的函数。建议最小化均方误差的组件数在该图中突出显示。

第二个图表是实际的回归图,包括预测指标。

同时,在屏幕上会打印出以下信息。

该模型在校准数据上似乎表现良好,但在验证集上的表现则不尽如人意。这是机器学习中所谓的过拟合的经典例子。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性 ( 点击文末“阅读原文”获取完整代码数据******** ) 。
拓端
2023/06/02
4810
偏最小二乘回归(PLSR)和主成分回归(PCR)
此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性。当存在大量预测变量时,PLSR和PCR都是对响应变量建模的方法,并且这些预测变量高度相关或甚至共线。两种方法都将新的预测变量(称为组件)构建为原始预测变量的线性组合,但它们以不同的方式构造这些组件。PCR创建组件来解释预测变量中观察到的变异性,而根本不考虑响应变量。另一方面,PLSR确实将响应变量考虑在内,因此通常会导致模型能够使用更少的组件来适应响应变量。
拓端
2020/08/04
2.4K0
偏最小二乘回归(PLSR)和主成分回归(PCR)
偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性(点击文末“阅读原文”获取完整代码数据)。
拓端
2022/11/02
1.4K0
R语言实现偏最小二乘回归法 partial least squares (PLS)回归
偏最小二乘回归是一种回归形式 。  当使用pls时,新 的线性组合有助于解释模型中的自变量和因变量。
拓端
2020/09/25
3.9K0
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
PLS回归主要的客户来自于化学、药品、食品和塑料行业。在本文中,我们将使用此类背景下的示例(点击文末“阅读原文”获取完整代码数据)。
拓端
2023/10/27
2920
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
偏最小二乘法(PLS)
PLS是交叉分解的第二个重要算法族,在python等语言中也有相应的包实现。一般如果需要在研究多个自变量与因变量的关系话题中,绕不过去的就是多元回归,包括以线性关系为主的多元线性回归和高次多项式为主的响应面分析,众所周知,在多元线性回归中一般可以用最小二乘法计算每个自变量的系数,这一理论比较成熟,其系数矩阵
用户7506105
2021/08/06
2.7K0
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据
本文建立偏最小二乘法(PLS)回归(PLSR)模型,以及预测性能评估。为了建立一个可靠的模型,我们还实现了一些常用的离群点检测和变量选择方法,可以去除潜在的离群点和只使用所选变量的子集来 "清洗 "你的数据 。
拓端
2022/11/21
8590
【视频讲解】偏最小二乘结构方程模型PLS-SEM分析白茶产业数字化对共同富裕的影响|附代码数据
本文将通过视频讲解,展示如何用偏最小二乘结构方程模型PLS-SEM分析白茶产业数字化对共同富裕的影响,并结合Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化实例和R语言结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响的代码数据,为读者提供一套完整的实践数据分析流程(点击文末“阅读原文”获取完整代码数据)。
拓端
2025/01/15
4660
【视频讲解】偏最小二乘结构方程模型PLS-SEM分析白茶产业数字化对共同富裕的影响|附代码数据
R语言中的偏最小二乘回归PLS-DA
今天,我们将 在Arcene数据集上执行PLS-DA, 其中包含100个观察值和10,000个解释变量。
拓端
2023/12/02
4210
R语言中的偏最小二乘回归PLS-DA
PLS-DA: 偏最小二乘法判别分析
偏最小二乘法判别分析(PLS-DA,Partial Least Squares Discriminant Analysis)经常用来处理分类和判别问题。其与PCA类似,不同的是PCA是无监督的,PLS-DA是有监督的。
Listenlii-生物信息知识分享
2020/06/01
21.4K0
PLS-DA: 偏最小二乘法判别分析
机器学习从0入门-线性回归
机器学习有许多不同的算法,每个算法都有其特定的应用场景和优缺点。然而,最简单的机器学习算法可能是线性回归。
皮大大
2023/08/25
5660
机器学习从0入门-线性回归
机器学习之线性回归(最小二乘法手写+sklearn实现)
这部分内容在我的CSDN博客中已经有提到,算是比较基础的部分。现在搬到公众号上,不能再像CSDN上那样简略,我尽量把它解释得通俗易懂一点。
Cyril-KI
2022/07/29
5310
机器学习之线性回归(最小二乘法手写+sklearn实现)
R语言中的偏最小二乘PLS回归算法
我将围绕结构方程建模(SEM)技术进行一些咨询,以解决独特的业务问题。我们试图识别客户对各种产品的偏好,传统的回归是不够的,因为数据集的高度分量以及变量的多重共线性。PLS是处理这些有问题的数据集的强大而有效的方法。
拓端
2020/08/28
1.6K0
临床预测模型/机器学习-偏最小二乘回归plsRcox算法学习
plsRcox 是一种基于偏最小二乘回归(PLS)和 Cox 回归的算法,用于高维数据的生存分析。该算法结合了 PLS 和 Cox 回归模型的优势,特别适用于变量数量多于样本数量的情况,常用于基因组学数据或其他高维生物信息学数据的分析。
凑齐六个字吧
2024/11/06
3250
临床预测模型/机器学习-偏最小二乘回归plsRcox算法学习
Python数据分析实验三:基于Scikit-Learn构建数据分析模型
文章相关资源可参考我的GitCode仓库:https://gitcode.com/Morse_Chen/Python_data_analysis
Francek Chen
2025/01/22
1590
Python数据分析实验三:基于Scikit-Learn构建数据分析模型
R语言中的偏最小二乘回归PLS-DA
主成分回归(PCR)的方法 本质上是使用第一个方法的普通最小二乘(OLS)拟合来自预测变量的主成分(PC)(点击文末“阅读原文”获取完整代码数据)。
拓端
2025/01/01
1920
R语言中的偏最小二乘回归PLS-DA
独家 | 为你介绍7种流行的线性回归收缩与选择方法(附代码)
本文讨论了几种子集和收缩方法:最佳子集回归, 岭回归, LASSO, 弹性网, 最小角度回归, 主成分回归和偏最小二乘。
数据派THU
2019/05/16
1.6K0
独家 | 为你介绍7种流行的线性回归收缩与选择方法(附代码)
【机器学习与实现】线性回归示例——波士顿房价分析
链接:https://pan.quark.cn/s/fc4b2415e371 提取码:ZXjU
Francek Chen
2025/01/22
2150
【机器学习与实现】线性回归示例——波士顿房价分析
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据
本文建立偏最小二乘法(PLS)回归(PLSR)模型,以及预测性能评估。为了建立一个可靠的模型,我们还实现了一些常用的离群点检测和变量选择方法,可以去除潜在的离群点和只使用所选变量的子集来 "清洗 "你的数据。
拓端
2023/01/10
1.2K0
最小二乘法,残差,线性模型-线性回归
最小二乘法公式是一个数学的公式,在数学上称为曲线拟合,此处所讲最小二乘法,专指线性回归方程。
zhangjiqun
2024/12/14
4160
最小二乘法,残差,线性模型-线性回归
推荐阅读
相关推荐
MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验