多元线性回归中的归一化

2024-10-01 09:41:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: importdatamodelsklearn规范化fitscorelinear
1条回答
网友
1楼 · 发布于 2024-10-01 09:41:32
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

我让他们也一样。我想知道你的剧本是如何运行的重新评分;可能是打印了示例中未包含的代码中的其他内容?在

相关问题 更多 >