首页 > 解决方案 > 什么 Python sklearn 函数可以将非数值作为训练目标?

问题描述

我正在学习这个例子

我注意到他们使用了 PassiveAggressiveClassifier 可以采用非数字 y_train 值。我了解在自然语言处理(NLP)中,我们需要将字符串训练文本转换为数值数组作为训练输入,以便神经网络模型可以接受,但为什么训练目标不需要转换为数值呢?还有哪些模型可以采取非数值训练目标?

#Initialize a PassiveAggressiveClassifier
pac=PassiveAggressiveClassifier(max_iter=50)
pac.fit(tfidf_train,y_train) 

标签: pythonscikit-learn

解决方案


这里有两件不同的事情:
- 当您进行分类任务时,类别的名称并不重要,因为它们之间没有距离的概念。例如,如果您正在进行逻辑回归,您可以将肯定答案标记为“是”、“肯定”或“1”,将否定答案标记为“否”、“否定”或“0”。这绝对不会影响您的模型的训练方式。
- 当你训练一个 NLP 模型时,你想在你的词汇表上定义一些距离。例如,您想知道“car”与“bus”相似,但“car”与“apple”不相似。最好的方法是将它们表示为根据它们的语义含义或多或少相互远离的向量(我们在这里使用向量的欧几里德距离)。这就是为什么我们将这种词的表示赋予 NLP 模型:您希望您的模型理解“汽车”和“公共汽车”是接近的,如果您将它们保留为词,这是不可能的。

注意:任何分类任务都可以将单词作为标签。

有关单词向量表示(即单词嵌入)的更多详细信息,请参见https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf 。


推荐阅读