如何在 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 3.7.11 中的随机树对数值属性使用啥分割标准?