Предсказание мульти-лейбла с scikit-learn - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть предсказание с несколькими метками с помощью конвейера 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)

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

Спасибо!

...