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

Posted

技术标签:

【中文标题】如何在 WEKA 中执行属性的名义到数值转换?【英文标题】:How to perform nominal to numeric conversion of attributes in WEKA? 【发布时间】:2015-01-23 02:51:53 【问题描述】:

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

【问题讨论】:

你能解决这个问题吗?我也面临同样的问题。 【参考方案1】:

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

完成此操作后,您可以保存 .ARFF 文件,并更改属性列表中的条目:

@attribute a0 false,true,maybe

@attribute a0 numeric

保存后,重新加载文档,希望一切正常。

或者,如果将您的数据转换回 ARFF 不会成为问题,您可以尝试您最喜欢的电子表格应用程序。

希望对您有所帮助!

【讨论】:

【参考方案2】:

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

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

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

你可以看到你的结果。

【讨论】:

有一个过滤器叫做OrdinalToNumeric。那不就行了吗?【参考方案3】:

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

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

【讨论】:

【参考方案4】:

是的,您可以在 weka 中将名义数据转换为数字:

示例:

选择:filters.unsupervised.attribute.OrdinalToNumeric

【讨论】:

以上是关于如何在 WEKA 中执行属性的名义到数值转换?的主要内容,如果未能解决你的问题,请参考以下文章

如何在weka中预处理数据以进行分类

Weka 3.7.11 中的随机树对数值属性使用啥分割标准?

Reptree (WEKA),只对数值属性的值排序一次

Weka 过滤分类器 arrayOutOfBoundsException

Weka机器学习:如何解释朴素贝叶斯分类器?

使用weka进行产品类别检测