簡體   English   中英

如何從正常的機器學習技術轉變為交叉驗證?

[英]How to change from normal machine learning technique to cross validation?

from sklearn.svm import LinearSVC

from sklearn.feature_extraction.text import CountVectorizer

from sklearn.feature_extraction.text import TfidfTransformer

from sklearn.metrics import accuracy_score

X = data['Review']

y = data['Category']

tfidf = TfidfVectorizer(ngram_range=(1,1))

classifier = LinearSVC()

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

clf =  Pipeline([
    ('tfidf', tfidf),
    ('clf', classifier)
])

clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)

print(classification_report(y_test, y_pred))


accuracy_score(y_test, y_pred)

這是訓練 model 和預測的代碼。 我需要知道我的 model 性能。 那么我應該在哪里更改為cross_val_score?

使用這個:(這是我以前項目的一個例子)

import numpy as np
from sklearn.model_selection import KFold, cross_val_score

kfolds = KFold(n_splits=5, shuffle=True, random_state=42)
def cv_f1(model, X, y):
  score = np.mean(cross_val_score(model, X, y,
                                scoring="f1",
                                cv=kfolds))
  return (score)


model = ....

score_f1 = cv_f1(model, X_train, y_train)

你可以有多個得分。 你應該改變評分=“f1”。 如果您想查看每個折疊的分數,只需刪除 np.mean

來自 sklearn 文檔

使用交叉驗證的最簡單方法是在估計器和數據集上調用 cross_val_score 助手 function。

在你的情況下,它將是

from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, X_train, y_train, cv=5)
print(scores)

暫無
暫無

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

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