Проверка модели с отдельным набором данных - PullRequest
0 голосов
/ 23 марта 2020

Извинения, довольно новый для sklearn. Я пытаюсь проверить модель, используя внешний набор данных для двоичной классификации текстовых строк. Я обучил модель, но хочу использовать ее для другого набора данных другого размера для прогнозирования, а не включать данные в первоначальное разделение набора данных. Возможно ли это вообще?

Начальное разделение

vectorizer = TfidfVectorizer(min_df=0.0, analyzer="char", sublinear_tf=True, ngram_range=(3, 3))
Xprod = vectorizer.fit_transform(prod_good)
X = vectorizer.fit_transform(total_requests)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=21)

Проверка модели

linear_svm=LinearSVC(C=1)
linear_svm.fit(X_train, y_train)
y_pred = linear_svm.predict(X_test)
score_test = metrics.accuracy_score(y_test, y_pred)
matrix = confusion_matrix(y_test, y_pred)

Новое предсказание

newpred = linear_svm.predict(Xprod)
...
Error:
ValueError: X has 4553 features per sample; expecting 24422

Думаю, что я неправильно понимаю некоторые основные c понятия здесь

1 Ответ

1 голос
/ 23 марта 2020

Функция fit_transform создает fit, а затем transform. Таким образом, эта строка соответствует вашему векторизатору, а затем преобразует total_requests в X:

X = vectorizer.fit_transform(total_requests)

Поскольку ваш векторизатор должен быть установлен только один раз (для того, чтобы каждый раз использовать одну и ту же матрицу функций vectorizer), чтобы вычислить Xprod, вам просто нужно использовать transform:

Xprod = vectorizer.transform(prod_good)

Кроме того, вам нужно вычислить Xprod после того, как векторизатор установлен, поэтому вычисляйте Xprod после X.

...