[英]Cross Validation Python Sklearn
我想先在我的SVM分類器上進行交叉驗證,然后再在實際測試集上使用它。 我想問的是,我是否對原始數據集或訓練集進行交叉驗證,這是train_test_split()
函數的結果?
import pandas as pd
from sklearn.model_selection import KFold,train_test_split,cross_val_score
from sklearn.svm import SVC
df = pd.read_csv('dataset.csv', header=None)
X = df[:,0:10]
y = df[:,10]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=40)
kfold = KFold(n_splits=10, random_state=seed)
svm = SVC(kernel='poly')
results = cross_val_score(svm, X, y, cv=kfold) #Cross validation on original set
要么
import pandas as pd
from sklearn.model_selection import KFold,train_test_split,cross_val_score
from sklearn.svm import SVC
df = pd.read_csv('dataset.csv', header=None)
X = df[:,0:10]
y = df[:,10]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=40)
kfold = KFold(n_splits=10, random_state=seed)
svm = SVC(kernel='poly')
results = cross_val_score(svm, X_train, y_train, cv=kfold) #Cross validation on training set
最好始終保留一個測試集,該測試集僅在您對模型滿意后才使用,然后再部署它。 因此,您要進行火車/測試拆分,然后將測試擱置一旁。 我們不會碰那個。
僅對訓練集執行交叉驗證。 對於k折中的每一個,您將使用訓練集的一部分進行訓練,其余部分用作驗證集。 對模型和超參數的選擇滿意之后。 然后使用測試集獲得最終基准。
您的第二段代碼是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.