我正在使用ElasticNet获取我的数据拟合。为了确定超参数(l1,alpha),我使用ElasticNetCV。使用获得的超参数,我将模型重新装配到整个数据集以供生产使用。我不确定这在机器学习方面是否正确,如果是的话,我是如何做到的。这段代码“有效”,大概做了它应该做的事情,但我想确定它也是正确的。 我的程序是:
X_tr, X_te, y_tr, y_te = train_test_split(X,y)
optimizer = ElasticNetCV(l1_ratio = [.1,.5,.7,.9,.99,1], n_alphas=400, cv=5, normalize=True)
optimizer.fit(X_tr, y_tr)
best = ElasticNet(alpha=optimizer.alpha_, l1_ratio=optimizer.l1_ratio_, normalize=True)
best.fit(X,y)
先谢谢你
我是这方面的初学者,但我很乐意分享我的ElasticNet超参数调优方法。我建议改为使用随机搜索CV。以下是我正在编写的当前代码的一部分:
警告:您正在测试100 x 100=10000个可能的组合
其优点是,在随机搜索CV中,迭代次数可以预先确定。测试点的选择是随机的,但比GridSearchCV(测试所有可能的组合)快90%(在某些情况下)
我正在对其他回归器使用相同的方法,如RandomForests和GradientBoosting,它们的参数网格要复杂得多,运行时需要更多的计算机能力
正如我在开始时所说,我对这一领域还不熟悉,因此欢迎提出任何建设性意见
约翰尼
相关问题 更多 >
编程相关推荐