Как перейти от обычной техники машинного обучения к перекрестной проверке? - PullRequest
0 голосов
/ 04 апреля 2020
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)

Это код для обучения модели и прогнозирования. Мне нужно знать производительность моей модели. так где я должен измениться, чтобы стать cross_val_score?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

используйте это: (это пример из моего предыдущего проекта)

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

0 голосов
/ 04 апреля 2020

из sklearn документация

Самый простой способ использовать перекрестную проверку - вызвать вспомогательную функцию cross_val_score в оценщике и наборе данных.

В вашем случае это будет

from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, X_train, y_train, cv=5)
print(scores)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...