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])
我想 运行 在具有 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])