Weka 离散化属性,其中一个值是迄今为止最常见的

Weka discretising attribute where one value is most common by far

我有一个数据集,其中 'number of days since last contact' 有一个数字属性,但值 -1 用于表示没有最后一次联系。这是迄今为止该属性的最大值。

我的想法是离散化这个属性,但是我怎样才能确保有一个'no contact'/-1 bin?

另外,这是解决这个问题的正确方法吗?

正确的方法应该是

  1. 将数据拆分为 -1 和其他所有内容
  2. 仅将分箱应用于 'everything else' 集中的值
  3. 再次连接数据集(洗牌也可能很好)

如果其他人有这个问题但找不到答案,这里是我根据 Anony-Mousse 的方法做的。 MathExpression 的过滤器文档提供了一个很好的拆分成任意 bin 的示例。

  1. 使用 MathExpression 过滤器拆分,例如ifelse(A>0, 2, 1) 分成两个箱子:高于和低于 0。我使用 ifelse(A>0, ifelse(A>400, 21, ceil(A/20)+1), 1 ) 对我的 -1 和 >400 值进行分类,并将介于两者之间的值置于宽度为 20 的分类中。
  2. 使用 numericToNominal 转换