例如,如果我针对这些值训练模型
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
模型为此做了什么?
例如,如果我针对这些值训练模型
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
模型为此做了什么?
这取决于您如何处理分类数据。例如,如果您使用基于字典的 one-hot 矢量化器:
new CategoricalOneHotVectorizer("Column2", "Column2", "Column3")
然后模型将为每列构建一个术语字典: Column1 -> [A, D, G] Column2 -> [B, E, H] Column3 -> [C, F, I]
如果尚未看到该值(不在字典中),则将CategoricalOneHotVectorizer
零分配给所有“单热”插槽。所以你的例子A B Z
将变成1 0 0 1 0 0 0 0 0
.
另一方面,如果您使用基于哈希的 one-hot 编码:
new CategoricalHashOneHotVectorizer("Column2", "Column2", "Column3")
传入的值 Z 将以与看到的值 C、F 和 I 相同的方式进行散列,这将根据散列的值激活2^HashBits
输出列的插槽之一。
关于这个的文档CategoricalOneHotVectorizer
不是很清楚,但它仍然说:
Key 值是 Ind/Bag 选项中设置的槽的从 1 开始的索引。如果未找到 Key 选项,则将其分配为零值。