RapidMiner:我可以使用通配符作为训练决策树模型的属性值吗?

时间:2015-04-14 13:20:41

标签: regex csv classification decision-tree rapidminer

我正在使用RapidMiner 5.3.013中一个相当简单的进程,它读取CSV文件并将其用作训练集来训练决策树分类器。该过程的结果是模型。读取第二个CSV并用作未标记的集合。模型(先前计算)应用到未标记的测试集,以便正确标记它。

CSV的每一行都包含一些属性,例如:
15,0,1555,abc * 15,label1

但是训练集的某些行可能是这样的:
15,0, * ,abc * 15,label2
这样做是因为第三个值可能采用不同的值,因此训练集的创建者在值的位置使用星形作为通配符。

我想做的是让决策树知道那里的星星意味着“匹配任何东西”,这样它就不会只匹配一颗星。

注意:

  1. 第4个字段中的星号(abc * 15)应按字面意思匹配,而不是通配符。
  2. 如果第3个字段总是包含星号,我可能不会将其包含在属性中,但事实并非如此。有时第3个字段包含整数值,应该按字面匹配。
  3. 我尝试将该字段留空,但不起作用
  4. 那么,有没有办法在训练分类器或使用模型时使用正则表达式,或者至少使用简单的通配符?

    另一种说法是:我可以指示分类器不使用某些条目中的某些属性(CSV中的行)吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

我会处理数据,因此缺失值本身就是有效的,我会将有效数字离散化为范围。

更详细地说,我所缺少的意思是属性的值类似于*的情况。我只是允许这是属性所采用的一个有效值。对于此属性的所有其他值,这些值都是数字,因此需要将它们转换为标称值以与现在有效的*兼容。

执行此操作非常繁琐但我还没有尝试过,但我会从操作员Declare Missing Value开始检测*并让它们丢失。从那里,我将使用运算符Discretize by Binning将数字转换为名义值。最后,我会使用Replace Missing Values将缺失值更改为名义值Missing。您可能会问为什么还要为上面的第一个Declare Missing步骤而烦恼?原因是它允许离散操作起作用,因为它会单独处理数字,因为非数字被标记为缺失。

然后,以正常方式将结果示例集传递给模型。显然,模型必须能够处理名义属性(决策树确实如此)。

在我看来,一些建模操作员更容忍丢失数据。我认为k-最近邻居可能是一个。在这种情况下,您可以简单地将缺失的标记标记为上述内容,而不必为离散步骤而烦恼。

缺失数据的整个区域确实需要小心,因为了解缺失的来源非常重要。如果缺失的数据与其他属性或标签本身相关,则不恰当地处理它可能会导致结果偏差。