簡體   English   中英

交叉驗證Python Sklearn

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

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