[英]How does `fit` function in scikit-learn make validation?
將其應用於MLPClassifier
時,我無法使用fit
函數。 我仔細閱讀了Scikit-Learn的文檔,但是無法確定驗證的工作方式。
是交叉驗證還是訓練數據與驗證數據之間存在分歧?
提前致謝。
fit
函數本身不包括交叉驗證,也不應用訓練分段。 幸運的是,您可以自己執行此操作。
火車測試拆分:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) // test set size is 0.33
clf = MLPClassifier()
clf.fit(X_train, y_train)
clf.predict(X_test, y_test) // predict on test set
K折交叉驗證
from sklearn.model_selection import KFold
kf = KFold(n_splits=2)
kf.get_n_splits(X)
clf = MLPClassifier()
for train_index, test_index in kf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
clf.fit(X_train, y_train)
clf.predict(X_test, y_test) // predict on test set
要進行交叉驗證,可以使用多種功能,您可以在此處閱讀更多信息。 這里說明的k折只是一個例子。
編輯:
感謝您提供此答案,但基本上擬合函數如何具體起作用? 它只是根據給定的數據(即訓練集)對網絡進行訓練,直到達到max_iter為止。
我假設您正在使用MLPClassifier
的默認配置。 在這種情況下,fit函數嘗試基於adam優化器進行優化。 實際上,在這種情況下,網絡會進行訓練,直到達到max_iter為止。
此外,在K折交叉驗證中,只要循環通過還是從頭開始重新啟動,模型是否會得到改善?
實際上,交叉驗證並不用於改善網絡性能,它實際上是一種用於測試算法在不同數據上的綜合程度的方法。 對於k折,訓練和測試k個獨立的分類器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.