python - 多元线性回归中的归一化

标签 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

最佳答案

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 一起运行;可能是从您未包含在示例中的代码中打印其他内容?

关于python - 多元线性回归中的归一化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064887/

相关文章:

python - requests.exceptions.ConnectionError : ('Connection aborted.' , gaierror(8, 'nodename nor servname provided, or not known' ))

python - 从可比较的、不可散列的项目列表中删除重复项的最快方法

python - 更新我的 NVIDIA 版本过时错误

graph - 绘制置信区间图(尤其是在 Minitab 或 e-view 中)

r - 在 R 中使用多个因变量进行分位数回归

html - Div 跳到第二行?为什么?

python - 支持向量机 : Choosing Support Vector Machine regression termination criterion tolerence in sklearn

python - 用回归填充 NaN 值

r - 在 R 中使用 mapply 时将 t.test 的输出保存到数据帧

php - filemtime() [函数.filemtime] : stat failed for filenames with umlauts