通过 python api 在 Weka GUI 和 Weka 中得到不同的结果

Posted

技术标签:

【中文标题】通过 python api 在 Weka GUI 和 Weka 中得到不同的结果【英文标题】:Different results in Weka GUI and Weka via python api 【发布时间】:2019-04-29 08:26:07 【问题描述】:

我们正在使用带有 weka 3.9.3 api(和 java 1.8.0191)的 python 2.7.12 尝试在一小段 python 代码下方使用 j48 分类器进行分类:

loader = Loader(classname="weka.core.converters.ArffLoader")
data = loader.load_file(data_dir + "new_ALL_FEATURES.arff")
data.class_is_last()

#seperate the data to train and test:
removeRange = 
Filter(classname="weka.filters.unsupervised.instance.RemoveRange", options= 
["-R","4951-last"])
removeRange.inputformat(data)
train = removeRange.filter(data)

removeRange = 
Filter(classname="weka.filters.unsupervised.instance.RemoveRange", options= 
["-R","first-4951"])
removeRange.inputformat(data)
test = removeRange.filter(data)
cls = Classifier(classname="weka.classifiers.trees.J48", options=["-C", 
"0.25"])
cls.build_classifier(train)

用于分类的其他详细信息选项:修剪树,无交叉验证,数据包括 23 个数字特征(类是名义的),缺失值被替换。 当使用相同的文件和具有相同选项的相同分类器运行 weka GUI 时([“-C”、“0.25”、“-M”、“2”]) 分类结果与我们从 API 得到的结果不同:树结构不同,GUI 树包含 77 个叶子,而 API 构建的树包含 97 个叶子。

我们搜索了类似的问题,发现如下链接:Different results in Weka GUI and Weka via Java code 但是,这与我们无关,因为我们没有执行交叉验证。

造成这种差异的原因可能是什么?我们缺少什么?请指教,提前谢谢。

【问题讨论】:

【参考方案1】:

更新:我们发现了问题。 显然,当我们通过 API 拆分数据时,我们错过了一个样本,这导致了差异。

【讨论】:

以上是关于通过 python api 在 Weka GUI 和 Weka 中得到不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中使用 Weka 生成的决策树

如何在 Weka GUI 中识别错误分类实例的详细信息?

哪个更快,使用 weka gui 或实现 weka java 代码?

Weka GUI - 内存不足,无法加载?

如何在weka中提取集群成员?

如何在 Weka GUI 中获取随机森林生成的树模型?