sklearn PLSRegression - X 的方差由潜在向量解释
Posted
技术标签:
【中文标题】sklearn PLSRegression - X 的方差由潜在向量解释【英文标题】:sklearn PLSRegression - Variance of X explained by latent vectors 【发布时间】:2018-03-01 20:40:41 【问题描述】:我使用 Python 的 sklearn.cross_decomposition.PLSRegression 执行了偏最小二乘回归
有没有办法为每个 PLS 组件检索 X 的解释方差分数,即 R2(X)?我正在寻找类似于 R pls 包中的 explvar() 函数的东西。但是,我也很感激有关如何自己计算它的任何建议。
有一个类似的question 和一个answer 解释了如何获得 Y 的方差。我猜,“Y 的方差”是在这种情况下所要求的。这就是为什么我提出了一个新问题 - 希望没关系。
【问题讨论】:
【参考方案1】:我设法找到了解决问题的方法。以下给出了PLS回归后每个潜在向量解释的X中的方差分数:
import numpy as np
from sklearn import cross_decomposition
# X is a numpy ndarray with samples in rows and predictor variables in columns
# y is one-dimensional ndarray containing the response variable
total_variance_in_x = np.var(X, axis = 0)
pls1 = cross_decomposition.PLSRegression(n_components = 5)
pls1.fit(X, y)
# variance in transformed X data for each latent vector:
variance_in_x = np.var(pls1.x_scores_, axis = 0)
# normalize variance by total variance:
fractions_of_explained_variance = variance_in_x / total_variance_in_x
【讨论】:
+1 感谢您提供此解决方案。当 X 是多变量时,您必须执行 sum("total_variance_in_x")。此外,如果你计算 (1 - "fractions_of_explained_variance"),你应该得到一个具有累积解释方差的数组。【参考方案2】:我不确定,所以如果有人可以贡献一些东西......
如下:
https://ro-che.info/articles/2017-12-11-pca-explained-variance
https://www.ibm.com/docs/de/spss-statistics/24.0.0?topic=reduction-total-variance-explained
variance_in_x = np.var(pls1.x_scores_, axis = 0)
fractions_of_explained_variance = variance_in_x / np.sum(variance_in_x)
【讨论】:
以上是关于sklearn PLSRegression - X 的方差由潜在向量解释的主要内容,如果未能解决你的问题,请参考以下文章
在管道中使用时带有 scikit-learn PLSRegression 的 ValueError
sklearn: LogisticRegression - predict_proba(X) - 计算
sklearn中,继承TransformerMixin实现自定义类放入DataFrameMapper,sklearn2pmml生成pmml报错