【发布时间】:2017-05-02 11:41:39
【问题描述】:
使用 sklearn 的 PLS 回归给出的预测结果非常差。当我得到模型时,我找不到找到“拦截”的方法。也许这会影响模型的预测?分数和负载的矩阵很好。系数的排列也是如此。无论如何,如何使用已经获得的属性来获取截距?
此代码抛出变量的系数。
from pandas import DataFrame
from sklearn.cross_decomposition import PLSRegression
X = DataFrame( {
'x1': [0.0,1.0,2.0,2.0],
'x2': [0.0,0.0,2.0,5.0],
'x3': [1.0,0.0,2.0,4.0],
}, columns = ['x1', 'x2', 'x3'] )
Y = DataFrame({
'y': [ -0.2, 1.1, 5.9, 12.3 ],
}, columns = ['y'] )
def regPLS1(X,Y):
_COMPS_ = len(X.columns) # all latent variables
model = PLSRegression(_COMPS_).fit( X, Y )
return model.coef_
结果是:
regPLS1(X,Y)
>>> array([[ 0.84], [ 2.44], [-0.46]])
除了这些系数之外,截距的值为:0.26。我做错了什么?
编辑 正确的预测(评估)响应是 Y_hat(与观察到的 Y 完全相同):
Y_hat = [-0.2 1.1 5.9 12.3]
【问题讨论】:
-
预测
[0, 0, 0, 0]怎么样? -
我已经编辑了我的答案。预测值(使用 3 VL)与观测值完全相等。
-
使用model.predict(X)获取:
-
你必须预测你的数据。你没有在你展示给我们的 sn-p 中
-
使用model.predict(X)获取:array([[ 2.07322661], [ 3.21992642], [ 5.62383293], [ 8.18301403]])
标签: python scikit-learn regression