Классификация текста - Как преобразовать и приспособить несколько строковых элементов в модель машинного обучения? - PullRequest
0 голосов
/ 20 марта 2020

В моем наборе данных есть 3 входных столбца (Производитель, краткий текст, поставщик), из которых я sh создаю список объектов векторизации. И тогда я ожидаю, что то же самое подойдет для модели машинного обучения. Последний столбец (категория) является меткой. У меня есть 2 миллиона строк в наборе данных. Я не могу векторизовать все три столбца одновременно.

Образец данных

enter image description here

train_X, test_X, train_Y, test_Y = model_selection.train_test_split(df[["Manufacturer", "short text", "supplier"], df['category'],test_size=0.15, random_state=500)

train_X = pd.DataFrame(data = train_X)
train_Y = pd.DataFrame(data = train_Y)
test_X = pd.DataFrame(data = test_X)
test_Y = pd.DataFrame(data = test_Y)


# creating SVM model
text_clf_svm    =   Pipeline([('vect',  CountVectorizer(lowercase=True, preprocessor= None, tokenizer= None, ngram_range=(1,6), stop_words= 'english', analyzer='word', max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False)),       
                              ('tfidf', TfidfTransformer()),            
                              ('clf-svm',   SGDClassifier(loss='modified_huber',    penalty='l2',shuffle=True,      
                               alpha=0.000001,  max_iter=9, random_state=None)),])      


#running training data on svm model
text_clf_svm1 = text_clf_svm.fit(train_X, train_Y)

Ошибка

Found input variables with inconsistent numbers of samples

Пожалуйста, дайте мне знать, как векторизовать все 3 столбца вместе.

Заранее спасибо.

1 Ответ

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

Вы в основном спрашиваете, как vectorise data. Существуют различные типы данных (например, табличные данные, текстовые данные, данные изображения и т. Д.), И для каждого типа данных можно использовать разные методы векторизации. Табличные данные могут состоять из категориальных переменных (векторизованных с помощью однократного кодирования) или непрерывных переменных (векторизованных с нормализацией). Текстовые данные могут быть векторизованы, например, с помощью Bag of words или TF-IDF.

В случае вашего набора данных приведены типы данных каждого столбца:

  • Производитель, поставщик , категория = категориальная
  • короткий текст = текст

Я понимаю, что это может сбивать с толку, потому что ваши категориальные особенности состоят из строк, поэтому на первый взгляд может показаться, что это текст. Но у вас есть два основных пути продвижения вперед:

  1. вы рассматриваете «Производитель» и «поставщик» в качестве категорий, и вы используете CountVectorizer только для «короткого текста». Затем вы объединяете векторизацию всех объектов вместе и подаете ее в модель
  2. Или, как предлагается в комментариях, вы объединяете 3 столбца вместе и обрабатываете полученную строку как новый текстовый столбец, который вы векторизовать CountVectoriser и затем перейти к модели

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

...