Ошибка при классификации нового линейного кадра данных SVM - PullRequest
0 голосов
/ 03 февраля 2020

Я создал мультиклассовую модель классификации с помощью линейного SVM. Но я не могу классифицировать новый загруженный фрейм данных (моя база должна быть классифицирована). У меня следующая ошибка.

Что мне нужно сделать, чтобы преобразовать мой новый текст (df.reason_text) в TFID и классифицировать (вызывать model.prediction (?)) с моей моделью?

Обучающая модель

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(ngram_range=(1,2), stop_words=stopwords) 
features = tfidf.fit_transform(training.Description).toarray()
labels = training.category_id

model = LinearSVC()
X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, training.index, test_size=0.33, random_state=0)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

Теперь я не могу преобразовать мой новый фрейм данных для классификации

Загрузка нового фрейма данных по классификации

from pyathena import connect
import pandas as pd
conn = connect(s3_staging_dir='s3://athenaxxxxxxxx/result/', 
                   region_name='us-east-2')
df = pd.read_sql("select * from data.classification_text_reason", conn)

features2 = tfidf.fit_transform(df.reason_text).toarray()
features2.shape

После преобразования текста нового фрейма данных с помощью TFID и его сортировки я получаю следующее сообщение

y_pred1 = model.predict(features2)

error

ValueError: X has 1272 features per sample; expecting 5319

'

1 Ответ

1 голос
/ 03 февраля 2020

Когда вы загружаете новый DF для классификации, вы снова вызываете fit_tranform (), но вы должны вызывать только transform ().

fit_transform () description : Learn vocabulary and idf, return term-document matrix.

transform () описание : Transform documents to document-term matrix.

Вам необходимо использовать преобразователь, созданный при обучении алгоритма, поэтому код будет:

tfidf.transform(df.reason_text).toarray()

Если у вас все еще есть ошибка формы объекта, возможно, проблема с формами массивов. Решите часть преобразования, и если ошибка все еще происходит, опубликуйте пример поезда и тестовых данных в формате массива, я буду продолжать помогать.

...