gpt4 book ai didi

python - PLS 结果随 sci-kit 版本的变化而变化

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:52 24 4
gpt4 key购买 nike

我使用 sci-kit/python 将数据与 PLS 模型进行了拟合。我注意到 Python 3.7/Sci-kit 0.20.1 的结果大约是 Python 2.7/Sci-kit 0.17 的结果的一半。与其他代码相比,看来Python2.7/Sci-kit 0.17的结果应该是可以预料的。谁能帮助我理解我做错了什么?

我使用的代码完全相同,发布如下:

import pandas as pd
import numpy as np
import sklearn
from sklearn.cross_decomposition import PLSRegression
df = pd.read_csv('PSLR.csv', delimiter=';')
y = df['R']
X = df[['A','B','C','D','E','F','G','H']]
pls2 = PLSRegression(n_components=3)
pls2.fit(X, y)
print(pls2.coef_)
y_intercept = pls2.y_mean_ - np.dot(pls2.x_mean_ , pls2.coef_)
print (y_intercept)

数据是:

      R  A  B  C  D  E  F  G  H
0 149 1 0 0 0 0 0 1 0
1 98 0 1 0 0 0 0 1 0
2 72 0 0 1 0 0 0 1 0
3 74 0 0 0 1 0 0 1 0
4 124 1 0 0 0 0 0 0 1
5 71 0 1 0 0 0 0 0 1
6 53 0 0 1 0 0 0 0 1
7 64 0 0 0 1 0 0 0 1
8 186 1 0 0 0 1 1 1 0
9 127 0 1 0 0 1 1 1 0
10 121 0 0 1 0 1 1 1 0
11 104 0 0 0 1 1 1 1 0
12 98 1 0 0 0 0 1 1 1
13 64 0 1 0 0 0 1 1 1
14 38 0 0 1 0 0 1 1 1
15 17 0 0 0 1 0 1 1 1

以及 Python 3.7/sci-kit 0.20 的结果:

[[ 21.31738122]
[ -0.55514014]
[ -8.9932702 ]
[-11.76897088]
[ 20.21781964]
[ -5.65972552]
[ -5.76695658]
[-18.17454004]]
[102.43789531]

但对于 Python 2.7/Sci-kit 0.17:

[[ 47.66711352]
[ -1.24133108]
[-20.10956351]
[-26.31621892]
[ 45.20841908]
[-10.96001135]
[-12.89530694]
[-35.19484545]]
[112.69680383]

最佳答案

我找到了解决方案:

pls 的“scale”选项的默认值已更改:scale=False 产生我想要的前置因素。

关于python - PLS 结果随 sci-kit 版本的变化而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53589761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com