簡體   English   中英

scikit-learn中的`fit`功能如何進行驗證?

[英]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.

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