SKLearn Linear Regression 但在开始之前设置某些系数

SKLearn Linear Regression but setting certain coefficients before starting

我想 运行 在具有 50 个变量的数据集上使用 SKLearn 进行线性回归。但是,我想在开始训练之前为 say 2 个变量设置系数。这可能吗?

您希望为系数提供初始值或猜测值,这对于 LinearRegression 是不可能的,因为它 calls scipy.linalg.lstsq from scipy.

不太确定提供初始猜测的目的是什么,因为对于线性回归,您可以拟合模型,即通过使用 QR 分解或 SVD 找到最小二乘解,不需要提供初始猜测或所以。

如果你想出于某种目的尝试它,我想你可以尝试类似 lsmr or curve_fit 的方法,但请记住,这并不是真正众所周知的线性回归:

from sklearn import datasets, linear_model
from scipy.optimize import curve_fit
from sklearn.preprocessing import StandardScaler

X, y = datasets.load_diabetes(return_X_y=True)
X = StandardScaler().fit_transform(X)

regr = linear_model.LinearRegression()
regr.fit(X,y)

regr.coef_
array([ -0.47623169, -11.40703082,  24.72625713,  15.42967916,
       -37.68035801,  22.67648701,   4.80620008,   8.422084  ,
        35.73471316,   3.21661161])

#lmsr
lsmr(X,y,x0 = np.repeat(2.0,X.shape[1]))
(array([ -0.4762317 , -11.40703083,  24.72625712,  15.42967915,
        -37.68035803,  22.67648699,   4.8062001 ,   8.42208398,
         35.73471314,   3.21661159])

#non linear least square
def func(x,*params):
    return x @ params

coef_, cov_ = curve_fit(func,X,y,p0 = np.repeat(2,X.shape[1]))
coef_

array([ -0.47623371, -11.40702964,  24.72625986,  15.42967394,
       -37.68022801,  22.67639202,   4.8061298 ,   8.42205138,
        35.73466837,   3.21661273])