У меня есть предсказание с несколькими метками с помощью конвейера scikit-learn.Он работает правильно с точки зрения внутреннего тестирования и получения метрик для каждого из прогнозов меток.Однако у меня возникают проблемы с получением правильной структуры для вывода данных.Когда я запускаю код для невидимых / внешних данных, он, по-видимому, выполняет прогнозы для каждой из меток, но заменяет значения в том же столбце.Поэтому я получаю только один столбец прогнозов.
Этот набор данных включает в себя более 20 меток (категорий) и является частью модели НЛП.Каждая из меток в двоичном виде (0 или 1).Я новичок и очень ценю помощь.Спасибо!
Вот три части кода: (1) конвейер, (2) цикл для данных тестирования / проверки с помощью подгонки / прогнозирования и (3) попытки кодирования функции прогнозирования для внешних данных.
1) Трубопровод:
SVC_pipeline = Pipeline([
('tfidf',
TfidfVectorizer(tokenizer=LemmaTokenizer(), min_df=8)),
('clf', OneVsRestClassifier(LinearSVC(), n_jobs=6)),
])
2) Для цикла:
for category in categories:
print('processing {}'.format(category))
# train
SVC_pipeline.fit(X_train, train[category])
# test
prediction = SVC_pipeline.predict(X_test)
print('Test accuracy is
{}'.format(accuracy_score(test[category], prediction)))
3) Прогнозировать внешние данные:
doctext = sampdf['doc_text']
pred = SVC_pipeline.predict(doctext)
Такжепопробовал это:
for category in categories:
print('... Processing {}'.format(category))
svcpredict = SVC_pipeline.predict(testthis)
np.savetxt("/Users/.../Dropbox/.../svcpredicts.csv", svcpredict)
Я также попробовал другие несколько вариантов, но все они имели одинаковый результат.Метрики проходили через все метки и давали разные метрики для каждой категории.Но результат дал мне только один столбец прогнозов.
Спасибо!