基于Python(sklearn)计算PLS中的VIP值

这篇博客介绍了如何在Python的sklearn库中计算偏最小二乘法(PLS)中的变量重要性VIP值,虽然sklearn的PLS模型不直接提供此功能。文章详细阐述了VIP的计算公式,并提供了计算步骤,包括获取R和T矩阵,计算残差,最后计算VIP值的完整代码。
摘要由CSDN通过智能技术生成

基于Python(sklearn)计算PLS中的VIP值

sklearn中PLS回归模型并没有计算VIP值的方法,但VIP又是很重要的筛选变量方法。下附代码思路与完整代码,若有错误,万望指正。

1.首先亮明计算公式:

在这里插入图片描述
其中:
VIPj:对应于第j个特征的VIP值;
p:预测变量的总数;
A:PLS成分的总数;
R矩阵:A个PLS成分中,每个成分a都对应一套系数wa将X转换为成分得分,系数矩阵写作R,大小为p×A;
T矩阵:n个样本中,每个样本会计算出A个成分得分,得分矩阵记做T,大小为n×A,ta代表n个样本的第a个成分的得分列表;
以上有T = XR
qa:
e是残差,X0和y0代表数据和标签。

2. 按照sklearn中对属性的解释:
在这里插入图片描述
该x_rotations_应对应于R矩阵,T矩阵对应于transform后生成的降维数据。
又依据:
在这里插入图片描述
有模型中e残差应为0,即y = yhat = X coef_

3. 组织计算步骤
1)计算qa2:qa = yhat.T ta -> Q2 = q2 = np.square(y.T, T)
2) p = X.shape[1]
3) = np.sum(Q2)
4) R = x_rotations_
4) = R[j, a] / np.linalg.norm(R[:, a])

Ok,万事具备,开搞。
下付完整代码

def compute_VIP(X,
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值