我正在尝试使用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!
我想念什么? 谢谢
答案 0 :(得分:1)
在Weka中,同时存在String
和nominal
数据类型。 String
数据类型是具有不确定数量值的文本类型(例如,跟踪ID:R99432239US),而Nominal
类型则对应于封闭集合中的值(例如,状态{步行,跑步,坐着})
解析csv
文件时,加载程序会根据数据中出现的值的数量来分配属性的数据类型。
如果要使用将数字值视为标称值,我相信您会希望查看Discretize
过滤器,而不是使用NumericToNominal
过滤器。