多元线性回归中的归一化

时间:2013-04-17 16:02:49

标签: python statistics regression scikit-learn linear-regression

我有一个数据集,我想建立一个多元线性回归模型。为了比较不同的自变量,我们用它们的标准偏差对它们进行归一化。我使用了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

1 个答案:

答案 0 :(得分:1)

regrEN = ElasticNet(normalize=True)
regrEN.fit(X,y)
print regrEN.score(X,y)
0.00883477003833


regrEN.fit(X1,y)
print regrEN.score(X1,y)
0.00883477003833

我让他们变得一样。我想知道你的脚本如何运行regr.score;可能是在您的示例中未包含的代码中打印其他内容?