例如,如果我为这些值训练模型
Column1 = A , Column2 = B , Column3 = C , Label = 10
Column1 = D , Column2 = E , Column3 = F , Label = 20
Column1 = G , Column2 = H , Column3 = I , Label = 30
如果我想预测怎么办?
Column1 = A , Column2 = B , Column3 = Z
模型为此做了什么?
这取决于您如何处理分类数据。 例如,如果您使用基于字典的独热矢量化器:
new CategoricalOneHotVectorizer("Column2", "Column2", "Column3")
然后,模型将构建每列的术语字典: 专栏 1 -> [阿、丁、丁] 列 2 -> [B, E, H] 第3栏 -> [中、法、一]
如果未看到该值(字典中不存在(,则CategoricalOneHotVectorizer
为所有"独热"插槽分配零。所以你的例子A B Z
将变成1 0 0 1 0 0 0 0 0
.
另一方面,如果您使用基于哈希的独热编码:
new CategoricalHashOneHotVectorizer("Column2", "Column2", "Column3")
传入值 Z 将以与看到的值 C、F 和 I 相同的方式进行哈希处理,这将根据哈希值激活输出列的2^HashBits
槽之一。
CategoricalOneHotVectorizer
上的文档对此不是很清楚,但它仍然说:
键值是在 Ind/Bag 选项中设置的插槽的从 1 开始的索引。如果未找到"键"选项,则为其分配值零。