我正在使用JRip分类器探索python的weka包装器。我加载了数据集,构建了一个模型,并提取了规则,没有任何重大问题
现在,据我所知,使用Weka Explorer时,10倍交叉验证是默认选项,如下图所示
因此,我假设如果我运行相同的JRip分类器,但使用python编写,默认模式将是10倍交叉验证,但我不确定。我的代码如下:
import weka.core.jvm as jvm
from weka.core.converters import Loader
from weka.classifiers import Classifier,Evaluation
from random import randint
jvm.start()
url = 'C:/Data/train_dataset.csv'
loader = Loader(classname = 'weka.core.converters.CSVLoader')
data = loader.load_file(url)
data.class_is_last()
seed = randint(1,99e6)
optimizations = 15
options = f'-F 3 -N 2.0 -O {optimizations} -S {seed}'.split()
jrip = Classifier(classname = 'weka.classifiers.rules.JRip',options=options)
jrip.build_classifier(data)
ruleset = jrip.jwrapper.getRuleset()
for i in range(ruleset.size()):
rule = ruleset.get(i)
print(rule.toString(data.class_attribute.jobject))
代码非常标准,主要是从weka网站的示例中提取的(以前从未在Python中使用过weka)
我也读过关于有crossvalidate_模型方法的评估类,但我不确定这是否是我要寻找的,以及如何正确使用它
如何在python脚本中构建模型并应用不同的设置,或者知道实际使用的是哪些设置?例如,如果我想增加折叠次数或使用其他设置,如Percentage split
、Supplied test
集或Use training set
评价
在代码示例中,您在完整数据集上训练了分类器(JRip),没有执行交叉验证或任何其他形式的评估。
weka.classifiers.Evaluation
Python类用于评估模型example repository包含以下示例:
只有
test_model
需要经过训练的分类器(当您根据测试集评估其预测时)。crossvalidate_model
和evaluate_train_test_split
方法应该只接收配置的分类器对象,而不是经过训练的分类器期权处理
如果您想知道分类器设置了哪些选项,只需通过
options
属性检索选项列表。如果要更改它们,请通过为同一属性提供列表来设置它们或者,您可以调用Classifier的
to_commandline()
方法,以获得与Weka在Weka Explorer中复制时提供的相同的命令行字符串(Weka中的大多数类,如过滤器、分类器和集群,都是选项处理程序,即它们具有此方法)由于Weka的选项处理有点不同(嵌套是通过双引号完成的,内部嵌套是通过反斜杠转义引号完成的),因此应该使用
weka.core.classes
模块中的方法split_options
将命令行字符串(带或不带类名)拆分为值列表或者,您可以使用
weka.core.classes
模块的from_commandline()
方法,而不是手动拆分命令行字符串,该方法允许您将包含classname和option的单个字符串拆分为Weka对象。例如:相关问题 更多 >
编程相关推荐