如何在WEKA中执行属性的名义到数字转换?

时间:2014-11-25 07:32:34

标签: classification weka svm

我有一个包含数字和名义属性混合的数据集。我想将数据集中的所有名义属性转换为数字,以便我可以应用仅适用于数字属性的SVM分类器内核(PolyKernel和RBFKernel)。任何帮助将不胜感激。仅供参考我已经尝试过NominalToBinary过滤器(它不是我想要的)

3 个答案:

答案 0 :(得分:1)

您可以做的一件事是使用RenameNominalValues转换属性的所有标签名称。请注意,所有这些新标签都需要是数字,因此您可能需要更改它们,如下所示:

enter image description here

完成后,您可以保存.ARFF文件,并从以下位置更改属性列表中的条目:

@attribute a0 {false,true,maybe}

@attribute a0 numeric

保存后,重新加载文档,希望所有文件都能正常加载。

或者,如果将数据转换回ARFF,则可以尝试使用自己喜欢的电子表格应用程序。

希望这有帮助!

答案 1 :(得分:0)

没有将名义数据转换为数值数据的直接过滤器。如果您的名义属性有 2 个值(性别:男性、女性),您可以轻松地在无监督过滤器“名义到二进制”下应用过滤器。

但如果属性有 2 个以上的变体,则不能使用 “从名义到二进制”。所以你需要使用一个名为“重命名名义值”的过滤器。在那里您可以将标称值转换为数值。 例如:如果您的数据集有一个名为 " region" 的属性,并且它有 "INNER_CITY, TOWN, SUBURBAN, SUBURBAN" 作为值,您可以使用“重命名名义值”过滤器。

有一个值替换表,您只需添加如下值即可。 INNER_CITY:0, TOWN:1, SUBURBAN:2, SUBURBAN:3

你可以看到你的结果。

答案 2 :(得分:0)

作为 ADAMS 一部分的 NominalToNumeric 过滤器(包:weka.filters.unsupervised.attribute)允许您做到这一点。您可以使用内部表示(即标签从 0 开始的顺序),或者,如果标签中有数字部分可以变成数字,则使用正则表达式来转换这些子字符串。

ADAMS 还提供了 Weka Investigator,这是一个比 Weka Explorer 更强大的工具。只需下载 adams-ml-app-snapshot snapshot 即可访问此过滤器。