簡體   English   中英

LassoCV如何在scikit中學習分區數據?

[英]How does LassoCV in scikit-learn partition data?

我在sklearn中使用Lasso方法執行線性回歸。

根據他們的指導,以及我在其他地方看到的內容,建議將其分解為更傳統的訓練集/驗證集分區,而不是簡單地對所有訓練數據進行交叉驗證。

因此,套索在訓練集上受到訓練,然后根據驗證集的交叉驗證結果調整超參數α。 最后,在測試集上使用接受的模型,以給出一個真實的視圖哦它將如何在現實中執行。 在這里分離問題是防止過度擬合的預防措施。

實際問題

Lasso CV是否符合上述協議,或者只是以某種方式在同一數據和/或同一輪CV中訓練模型參數和超參數?

謝謝。

如果將sklearn.cross_validation.cross_val_scoresklearn.linear_model.LassoCV對象一起使用,則表示您正在執行嵌套交叉驗證 cross_val_score將根據您指定折疊的方式將數據划分為訓練集和測試集(可以使用sklearn.cross_validation.KFold等對象完成)。 火車組將被傳遞給LassoCVLassoCV本身會執行另一次數據分割,以便選擇正確的懲罰。 這似乎與您正在尋找的設置相對應。

import numpy as np
from sklearn.cross_validation import KFold, cross_val_score
from sklearn.linear_model import LassoCV

X = np.random.randn(20, 10)
y = np.random.randn(len(X))

cv_outer = KFold(len(X), n_folds=5)
lasso = LassoCV(cv=3)  # cv=3 makes a KFold inner splitting with 3 folds

scores = cross_val_score(lasso, X, y, cv=cv_outer)

答: LassoCV不會為您完成所有工作,您必須將它與cross_val_score結合使用才能獲得您想要的效果。 這同時是實現這些對象的合理方式,因為我們也可能只對擬合超參數優化的LassoCV感興趣,而不必直接在另一組保持數據上進行評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM