python - 什么 Python sklearn 函数可以将非数值作为训练目标?
问题描述
我正在学习这个例子。
我注意到他们使用了 PassiveAggressiveClassifier 可以采用非数字 y_train 值。我了解在自然语言处理(NLP)中,我们需要将字符串训练文本转换为数值数组作为训练输入,以便神经网络模型可以接受,但为什么训练目标不需要转换为数值呢?还有哪些模型可以采取非数值训练目标?
#Initialize a PassiveAggressiveClassifier
pac=PassiveAggressiveClassifier(max_iter=50)
pac.fit(tfidf_train,y_train)
解决方案
这里有两件不同的事情:
- 当您进行分类任务时,类别的名称并不重要,因为它们之间没有距离的概念。例如,如果您正在进行逻辑回归,您可以将肯定答案标记为“是”、“肯定”或“1”,将否定答案标记为“否”、“否定”或“0”。这绝对不会影响您的模型的训练方式。
- 当你训练一个 NLP 模型时,你想在你的词汇表上定义一些距离。例如,您想知道“car”与“bus”相似,但“car”与“apple”不相似。最好的方法是将它们表示为根据它们的语义含义或多或少相互远离的向量(我们在这里使用向量的欧几里德距离)。这就是为什么我们将这种词的表示赋予 NLP 模型:您希望您的模型理解“汽车”和“公共汽车”是接近的,如果您将它们保留为词,这是不可能的。
注意:任何分类任务都可以将单词作为标签。
有关单词向量表示(即单词嵌入)的更多详细信息,请参见https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf 。
推荐阅读
- python - 将所有项目设置为 PyQt5 的默认值(标签除外)的方法?
- angular - Angular 9 - 出现错误 - pendo-staging.js:7 TypeError: 无法读取属性'composedPath' of null
- sql - SQL || 计算每个城市的时间花费(字段)
- angular - 添加到项目后,Bootstrap 无法在 Angular 11 上运行
- batch-file - 创建批处理脚本以根据文件名的结尾将特定文件从一个文件夹复制到单独的文件夹
- python - 如何在pyqt5中禁用选项卡的所有内容
- xamarin.forms - Xamarin.Forms.GoogleMaps 地图未更新
- c++ - 为什么当我将小部件提升到一个类时会显示此错误?“C1083:无法打开包含文件:'glwidget.h':没有这样的文件或目录”
- python - 如何修改代码以查找测试数据集错误
- batch-file - 如何使用 Type 和 Batch 链接源和目标