Я пытаюсь выполнить классификацию текста с помощью укладки. Я новичок в ML, поэтому извиняюсь, если это глупый вопрос. Я пытаюсь обучить один и тот же алгоритм LogisticRegression различным текстовым функциям для создания разных классификаторов, а затем использовать мета-классификатор (также LogisticRegression), чтобы объединить их все. Функции, которые я использую, - это слова в тексте и соответствующие теги части речи.
Классификатор, использующий слова в качестве функции, определяется следующим конвейером:
lr =LogisticRegression()
words = make_pipeline(ColumnSelector(column='text'),
CountVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000),
lr)
Классификатор, использующий POS в качестве функции, определяется следующим конвейером:
pos = make_pipeline(ColumnSelector(column='pos'),
CountVectorizer(binary=True, ngram_range=(2,3),
max_features=5000),
lr)
Наконец, метаклассификатор определяется следующим образом:
sclf = StackingCVClassifier(classifiers=[words, pos],
meta_classifier=lr)
Проблема возникает, когда я пытаюсь обучить классификатор:
classifiers = {"Words": words,
"POS": pos,
"Stack": sclf}
for key in classifiers:
classifier = classifiers[key]
classifier.fit(X_train, Y_train)
Слова и POS установлены, но классификатор стека - нет, и я получаю следующую ошибку:
IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices
X_train содержит фрейм данных со столбцом «текст», который содержит необработанный текст, и столбец «pos», который содержит необработанные теги POS, поэтому я применяю преобразования, необходимые через конвейеры.
Когда я пытаюсь сделать то же самое с методом StackingClassifier, у меня нет этой проблемы. Есть идеи о том, что идет не так?
Спасибо!