0

我想得到这些图: http ://scikit-learn.org/stable/auto_examples/linear_model/plot_lasso_coordinate_descent_path.html

来自我已经训练过的弹性网。这个例子确实

from sklearn.linear_model import lasso_path, enet_path
from sklearn import datasets

diabetes = datasets.load_diabetes()
X = diabetes.data
print("Computing regularization path using the elastic net...")
alphas_enet, coefs_enet, _ = enet_path(
    X, y, eps=eps, l1_ratio=0.8, fit_intercept=False)

这基本上需要从X,y整个模型中重新计算。不幸的是,我没有X,y.

在我使用的训练sklearn.linear_model.ElasticNetCV中返回:

coef_ : array, shape (n_features,) | (n_targets, n_features)

    parameter vector (w in the cost function formula)

mse_path_ : array, shape (n_l1_ratio, n_alpha, n_folds)

Mean square error for the test set on each fold, varying l1_ratio and alpha.

而我需要改变 l1_ratio 和 alpha 的参数向量。

这可以在不重新计算的情况下完成吗?这将是极大的浪费时间,因为这些 coef_paths 实际上已经计算过了

4

1 回答 1

1

简短的回答

不是一次合适。

长答案

如果您查看 的源代码ElasticNetCV,您将看到在该类正在调用的 fit 方法中enet_path,但alphas设置为 alpha 的值ElasticNet(默认为 1.0),该值由 alphas 的值设置,ElasticNetCV最终将是单个值。因此,无需计算允许您创建路径图的默认 100 个 alpha 值的系数,您只需为您在 CV 中设置的每个 alpha 值获取一个。话虽这么说,您可以初始化 CV 中的 alpha 以模仿 100 默认值,enet_path然后组合每个折叠的系数,但这将是相当长的运行时间。正如您所提到的,您已经适合 CV,这不是一个选择。

于 2017-10-20T18:03:35.470 回答