3 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個贊
好問題!答案是......您不必每次都創(chuàng)建模型。你的直覺是正確的。請隨意移至model = LogisticRegression()
循環(huán)外部的頂部,然后重新運(yùn)行以確認(rèn)。
model.fit(X_train, y_train)
無論哪種方式,每次循環(huán)后存在的模型對象都是相同的。

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊
簡短的回答是肯定的。
原因是因?yàn)檫@是k折交叉驗(yàn)證
簡而言之,這意味著您正在訓(xùn)練k
多個模型,評估每個模型的結(jié)果并一起求平均值。
我們在沒有單獨(dú)的訓(xùn)練和測試數(shù)據(jù)集的情況下這樣做。交叉驗(yàn)證將訓(xùn)練數(shù)據(jù)分割成k
子組,每個子組都包含自己的測試/訓(xùn)練分割(我們稱之為折疊)。然后,我們在第一折疊的訓(xùn)練數(shù)據(jù)上訓(xùn)練模型并在測試數(shù)據(jù)上進(jìn)行測試。對每個折疊使用新模型重復(fù)所有折疊,現(xiàn)在我們對完整數(shù)據(jù)集有了正確的預(yù)測。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個贊
KFold
用于交叉驗(yàn)證,這意味著訓(xùn)練模型并評估它。
這樣做時,您顯然需要兩個數(shù)據(jù)集:訓(xùn)練數(shù)據(jù)集和評估數(shù)據(jù)集。
使用時KFold
,您將訓(xùn)練集分割為折疊數(shù)(示例中為 5)并運(yùn)行五個模型,每次使用五分之一作為驗(yàn)證集,將數(shù)據(jù)集的其余部分作為訓(xùn)練集。
現(xiàn)在,為了回答這個問題:您每次都需要一個新模型,因?yàn)槟形鍌€模型,因?yàn)榈谖宕蚊看味加胁煌挠?xùn)練集以及不同的驗(yàn)證集。您必須創(chuàng)建一個新模型,scikit learn
因?yàn)楫?dāng)您運(yùn)行模型時model.fit()
,模型是在特定數(shù)據(jù)集上進(jìn)行訓(xùn)練的,因此您不能將其用于另一個訓(xùn)練數(shù)據(jù)集。
如果您只想創(chuàng)建一次,您可以制作副本,例如:
model = LogisticRegression(**params)
def parse_kfold(model)
? ? kf = KFold(n_splits=5, shuffle=True)
? ? for train_index, test_index in kf.split(X):
? ? ? ? model_fold = model
? ? ? ? ...
添加回答
舉報