具有多个标签输出的sklearn分类

时间:2018-04-02 13:35:52

标签: python python-3.x scikit-learn multilabel-classification

您好我正在学习AI来构建chatbot,我正在使用sklearn测试现在的分类,我设法通过以下代码获得良好的结果。

exclude=(
    -path "./86*/*"
    -o -path "./852/*"
    -o -path "./853/*"
    -o -path "./854/*"
    -o -path "./855/*"
    -o -path "./856/*"
    -o -path "./857/*"
    -o -path "./858/*"
    -o -path "./859/*"
)
find .8*/dti_processed/dti_FA.nii.gz -not \( "${exclude[@]}" \)

我的标签是:

  • 糟糕的语言
  • 政治
  • 宗教
  • 一般

当我输入任何句子时,我大部分时间都将正确的标签作为输出。但我的问题是,我希望得到多个标签,如果我把糟糕的语言和政治结合起来,而不是只预测坏语言,我怎么能得到多标签,如语言不好+政治。

我尝试添加以下代码,但是我收到了错误,该字符串不适用于合适的方法。

def tuned_nominaldb():
    global Tuned_Pipeline
    pipeline = Pipeline([
    ('tfidf', TfidfVectorizer(analyzer=text_process)),
    ('clf', OneVsRestClassifier(MultinomialNB(
        fit_prior=True, class_prior=None))),
    ])
    parameters = {
        'tfidf__max_df': (0.25, 0.5, 0.75),
        'tfidf__ngram_range': [(1, 1), (1, 2), (1, 3)],
        'clf__estimator__alpha': (1e-2, 1e-3)
    }

    Tuned_Pipeline = GridSearchCV(pipeline, parameters, cv=2, n_jobs=2, verbose=10)
    Tuned_Pipeline.fit(cumle_train, tur_train)

非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

当您使用OneVsRestClassifier时,它为每个使用的标签训练一个二元分类器,这意味着您可以在同一个句子中使用多个估算器并从中获取多个标签。我建议你查看这个链接: