如何在python-weka-wrapper中为关联规则准备数据?

时间:2019-07-01 10:08:18

标签: python machine-learning weka

我正在尝试使用python中的weka学习有关给定数据的规则。 Weka收到“无法处理字符串和数字属性”错误

我正在使用 https://github.com/fracpete/python-weka-wrapper3

起初,我做了:

loader = Loader(classname="weka.core.converters.CSVLoader")
    data = loader.load_file(path)
    data.class_is_last()

但是得到了:

javabridge.jutil.JavaException: weka.associations.Apriori: Cannot handle numeric attributes!

尝试学习规则时。

我了解错误,我们希望获得标称属性。好! 我已经搜索并找到了解决方法: http://weka.sourceforge.net/doc.dev/weka/filters/unsupervised/attribute/NominalToString.html

所以我尝试了:


loader = Loader(classname="weka.core.converters.CSVLoader")
    data = loader.load_file(path)
    nominal = Filter(classname="weka.filters.unsupervised.attribute.NumericToNominal", options=["-R", "first-last"])
    nominal.inputformat(data)
    nominal_data = nominal.filter(data)
    nominal_data.class_is_last()

    return nominal_data

但是得到了:

javabridge.jutil.JavaException: weka.associations.Apriori: Cannot handle string attributes!

我想念什么? 谢谢

1 个答案:

答案 0 :(得分:1)

在Weka中,同时存在Stringnominal数据类型。 String数据类型是具有不确定数量值的文本类型(例如,跟踪ID:R99432239US),而Nominal类型则对应于封闭集合中的值(例如,状态{步行,跑步,坐着})

解析csv文件时,加载程序会根据数据中出现的值的数量来分配属性的数据类型。

如果要使用将数字值视为标称值,我相信您会希望查看Discretize过滤器,而不是使用NumericToNominal过滤器。