SKLearn 线性回归,但在开始之前设置某些系数
Posted
技术标签:
【中文标题】SKLearn 线性回归,但在开始之前设置某些系数【英文标题】:SKLearn Linear Regression but setting certain coefficients before starting 【发布时间】:2022-01-15 11:42:59 【问题描述】:我想在具有 50 个变量的数据集上使用 SKLearn 运行线性回归。但是,我想在开始训练之前设置其中 2 个变量的系数。这可能吗?
【问题讨论】:
当你写“set”时,你的意思是它们是固定的吗?即,您不想通过任何培训来改变它们? 【参考方案1】:您希望为系数提供初始值或猜测值,这对于 LinearRegression
是不可能的,因为它是 calls scipy.linalg.lstsq from scipy。
不太确定提供初始猜测的目的是什么,因为对于线性回归,您可以拟合模型,即使用 QR 分解或 SVD 找到最小二乘解,无需提供初始猜测左右。
如果您想出于某种目的尝试它,我认为您可以尝试lsmr 或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])
【讨论】:
以上是关于SKLearn 线性回归,但在开始之前设置某些系数的主要内容,如果未能解决你的问题,请参考以下文章