簡體   English   中英

如何在 sklearn 中運行 10 折交叉驗證后運行 SVC 分類器?

[英]How to run SVC classifier after running 10-fold cross validation in sklearn?

我對機器學習比較陌生,希望在以下方面得到一些幫助:

我使用 10 折交叉驗證對我的數據運行了支持向量機分類器 (SVC),並計算了准確率得分(大約 89%)。 我正在使用 Python 和 scikit-learn 來執行任務。 這是一個代碼片段:

def get_scores(features,target,classifier):
  X_train, X_test, y_train, y_test =train_test_split(features, target , 
    test_size=0.3)
    scores = cross_val_score(
    classifier,
    X_train,
    y_train,
    cv=10,
    scoring='accuracy',
    n_jobs=-1)
 return(scores)

get_scores(features_from_df,target_from_df,svm.SVC())

現在,我如何使用我的分類器(在運行 10 倍 cv 之后)在 X_test 上對其進行測試並將預測結果與 y_test 進行比較? 您可能已經注意到,我在交叉驗證過程中只使用了 X_train 和 y_train。

我注意到 sklearn 有 cross_val_predict: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html我應該用 cross_val_predict 替換我的 cross_val_score 嗎? 僅供參考:我的目標數據列已二值化(值為 0 和 1)。

如果我的方法是錯誤的,請告訴我最好的方法。

謝謝!

您只需要拆分X和y。 不要拆分火車並進行測試。

然后,您可以將案例svm中的分類器傳遞給cross_val_score函數,以獲取每個實驗的准確性。

僅用三行代碼:

clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, X, y, cv=10)
print scores

你快到了:

# Build your classifier
classifier = svm.SVC()

# Train it on the entire training data set
classifier.fit(X_train, y_train)

# Get predictions on the test set
y_pred = classifier.predict(X_test)

此時,您可以使用sklearn.metrics模塊中的任何指標來確定您的表現如何。 例如:

from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))
from sklearn.metrics import classification_report
classifier = svm.SVC()
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
print(classification_report(y_test , y_pred)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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