gpt4 book ai didi

Python:Sklearn.linear_model.LinearRegression 工作异常

转载 作者:太空狗 更新时间:2023-10-30 01:58:41 26 4
gpt4 key购买 nike

我正在尝试进行多变量线性回归。但我发现 sklearn.linear_model 工作起来很奇怪。这是我的代码:

import numpy as np
from sklearn import linear_model

b = np.array([3,5,7]).transpose() ## the right answer I am expecting
x = np.array([[1,6,9], ## 1*3 + 6*5 + 7*9 = 96
[2,7,7], ## 2*3 + 7*5 + 7*7 = 90
[3,4,5]]) ## 3*3 + 4*5 + 5*7 = 64
y = np.array([96,90,64]).transpose()

clf = linear_model.LinearRegression()
clf.fit([[1,6,9],
[2,7,7],
[3,4,5]], [96,90,64])
print clf.coef_ ## <== it gives me [-2.2 5 4.4] NOT [3, 5, 7]
print np.dot(x, clf.coef_) ## <== it gives me [ 67.4 61.4 35.4]

最佳答案

为了找到您的初始系数,您需要在构建线性回归时使用关键字 fit_intercept=False

import numpy as np
from sklearn import linear_model

b = np.array([3,5,7])
x = np.array([[1,6,9],
[2,7,7],
[3,4,5]])
y = np.array([96,90,64])

clf = linear_model.LinearRegression(fit_intercept=False)
clf.fit(x, y)
print clf.coef_
print np.dot(x, clf.coef_)

使用 fit_intercept=False 可以防止 LinearRegression 对象与 x - x.mean(axis=0) 一起工作,否则它会做(并使用常量偏移量 y = xb + c 捕获平均值)- 或者等效地通过将 1 的列添加到 x

附带说明一下,在一维数组上调用 transpose 没有任何效果(它颠倒了轴的顺序,而你只有一个)。

关于Python:Sklearn.linear_model.LinearRegression 工作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393518/

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