机器学习——将同一行训练数据映射到多个目标

Machine Learning - Map same line of training data to multiple targets

首先我要说的是,在机器学习方面我完全是菜鸟,所以如果这是一个愚蠢的问题,请原谅。


我正在按照这个 tutorial 制作一个 MultinomialNB 模型。
我想知道是否有办法将单行映射到多个目标 类.

例如,我有句子 "Jesus cures cancer" 并希望它映射到 both 'sci.med' 和 'soc.religion.christian'。

有没有办法在 SciKit 中做到这一点?
我可以针对不同的目标将相同的句子重复两次吗,否则会扭曲最终模型吗?

你要做的是多标签class化;一些 scikit-learn classifiers 支持它,here's the documentation with more details.

如果你将同一个句子两次放入一个试图预测一个结果的模型中,它只会混淆模型,因为一个训练示例说它是一个 class 而另一个说它是不同的 class 并且它只学习预测一个 class。

是的,scikit 的 multinomialNB 可以实现为多标签。

from sklearn.multiclass import OneVsRestClassifier
from sklearn.naive_bayes import MultinomialNB

classifier=OneVsRestClassifier(MultinomialNB)

您现在可以使用 "classifier" 来拟合您的训练数据。

您可以了解有关 OneVsRestClassifier 的更多信息here