如果我通过ML.Net预测的分类值之前从未通过该怎么办

时间:2018-08-13 10:49:48

标签: ml.net

例如,如果我针对这些值训练模型

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

模型为此做什么?

1 个答案:

答案 0 :(得分:1)

这取决于您如何处理分类数据。 例如,如果您使用基于字典的一键矢量化程序:

new CategoricalOneHotVectorizer("Column2", "Column2", "Column3")

然后,该模型将建立每列术语词典: 第1列-> [A,D,G] 栏2-> [B,E,H] 第3列-> [C,F,I]

如果未看到该值(在字典中不存在),则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上的doc上不是很清楚,但是它仍然显示:

  

键值是在Ind / Bag选项中设置的插槽的从一开始的索引。如果找不到“密钥”选项,则会将其分配为零。<​​/ p>