我有一个数据集,我想为它建立一个多元线性回归模型。为了比较不同的自变量,我用它们的标准偏差对它们进行归一化。我用sklearn.linear_model
这个。我认为这种标准化不会影响决定系数,即R2
预测值;只有估计器的参数会不同。我在使用时得到了这个预期的结果LinearRegression
,但是当我使用时结果不同ElasticNet
。
我想知道我关于R2
标准化期间值不变的假设是否有效。如果它无效,是否有另一种方法可以通过能够相对比较变量的重要性来实现我想要的?
import numpy as np
from sklearn.linear_model import ElasticNet, LinearRegression
from sklearn import datasets
# Load the data
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
# Standardize data
X1 = X/X.std(0)
regrLinear = LinearRegression(normalize=False)
regrLinear.fit(X,y)
regrLinear.score(X,y)
0.51774942541329372
regrLinear.fit(X1,y)
regrLinear.score(X1,y)
0.51774942541329372
regrLinear = LinearRegression(normalize=True)
regrLinear.fit(X,y)
regrLinear.score(X,y)
0.51774942541329372
regrEN=ElasticNet(normalize=False)
regrEN.fit(X,y)
regrEN.score(X,y)
0.00883477003833
regrEN.fit(X1,y)
regrEN.score(X1,y)
0.48426155538537963
regrEN=ElasticNet(normalize=True)
regrEN.fit(X,y)
regrEN.score(X,y)
0.008834770038326667