【发布时间】:2014-05-09 10:51:31
【问题描述】:
我有一个包含一个自变量 x 和一个因变量 y=x 的玩具数据集。线性回归可以找到正确的截距 0 和系数 1。但弹性网络总是给出非零截距,通常系数为 0。我知道它是正则化的,所以它需要更小的系数。但这是预期的结果吗?下面是 Python/Scikit-learn 的代码。
#!/usr/bin/env python
import numpy as np
from sklearn.linear_model import ElasticNet, LinearRegression
X = np.zeros((10, 1))
X[:, 0] = np.random.random(10)
y = X[:, 0]
lr = LinearRegression().fit(X, y)
print "LR: ", lr.intercept_, lr.coef_
for l1_ratio in [0.01, 0.05, 0.25, 0.5, 0.75, 0.95, 0.99]:
enet = ElasticNet(l1_ratio=l1_ratio).fit(X, y)
print "ENet", l1_ratio, ":", enet.intercept_, enet.coef_
编辑:我之前问过回归 y=x^2。但这是一个更简单、更令人惊讶的结果。
【问题讨论】:
标签: python scikit-learn linear-regression