Применение классификационного конвейера к подмножеству набора данных - PullRequest
0 голосов
/ 14 мая 2019

Я работаю с классификациями коротких текстовых фрагментов (1-3 предложения). По темам набор данных содержит тексты о растениях, животных и других материалах. Во-первых, я использую классификатор (линейный SVM), чтобы пометить категорию каждого фрагмента (svm_gen: 0 - не связано, 1 - растения, 2 - животные). Работает без проблем.

Теперь у каждой категории есть подкатегории, которые я также хотел бы классифицировать с собственным алгоритмом для каждой. Скажем, для растений (svm_plant: 0 - другое, 1 - свиноматка, 2 - выращивать, 3 - урожай) и для животных (svm_animal: 0 - другое, 1 - кормить, 2 - домашнее животное, 3 - играть). Как можно выборочно применить соответствующие конвейеры к предварительно классифицированным переменным, не разбивая и не добавляя снова набор данных?

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

svm_gen = Pipeline([( ... )])
svm_gen.fit()
df_complete['Topic'] = svm_gen.predict(df_complete['Text'])

# write all texts concerning animals into a new df to apply the respective SVM
df_plant = df_complete[df_complete.Topic == 1]

# same for animals

# categories both individually for the sub-categories

# glue them back together

df_final = df_plant.append(df_animals, ingnore_index = True)

В принципе, я хотел бы иметь окончательный набор данных (pandas dataframe), содержащий столбец «Текст», столбец «Тема», а затем столбец «подтема». Последний был классифицирован выборочно на основе того, к какой категории относится текст в первом раунде классификации. Примерно так:

df_complete.loc[df_complete['Topic'] == 1, 'sub_Topic'] = svm_plant.predict['Text']
df_complete.loc[df_complete['Topic'] == 2, 'sub_Topic'] = svm_animals.predict['Text']
df_complete.loc[df_complete['Topic'] == 0, 'sub_Topic'] = 'n/a'

1 Ответ

0 голосов
/ 14 мая 2019

короткий ответ НЕТ

Из Научные документы

Трубопровод может использоваться для объединения нескольких оценок в одно ....

и

Все оценки в конвейере, кроме последнего, должны быть трансформаторы (то есть должен иметь метод преобразования). Последняя оценка может быть любого типа (трансформатор, классификатор и т. д.).

Таким образом, у вас может быть только один классификатор в конце конвейера, а конвейер Scikit является последовательным. Вы должны обучить разные классификаторы (повторное использование одной и той же линии) с разными наборами данных и вручную выбирать их.

...