Weka API中的自动调参方法简单总结

这里又想吐槽一下了。我们知道SKLearn中可以用GridSearch进行调参,例如下面的语句可以对Random Forest调参:

rf = RandomForestClassifier(random_state=10)
parameters = {'n_estimators':range(10,71,10), 'max_depth':range(3,14,2), 'min_samples_split':range(50,201,20), 'min_samples_split':range(80,150,20), 'min_samples_leaf':range(10,60,10),'max_features':range(3,11,2)}
gsearch = GridSearchCV(rf, parameters, scoring='roc_auc', cv=5)

是不是很简单方便(当然如果对所有超参都调参的话,运行效率可能会很慢。)

相比之下,Weka的调参就要麻烦很多(还有很多我没搞清的事情。),按照网友的介绍:https://www.cnblogs.com/lutaitou/p/5818027.html,调参主要有三种方法:CVParameterSelection、GridSearch、MultiSearch,但是仔细看看,只有CVParameterSelection是在Weka API中有的:

http://weka.sourceforge.net/doc.dev/index.html?weka/classifiers/meta/CVParameterSelection.html

而GridSearch在之前的Weka版本中有:

http://weka.sourceforge.net/doc.stable/index.html?weka/classifiers/meta/GridSearch.html

但是在新的版本中并不存在了,可以看到weka.classifiers.meta这个包并没有GridSearch这个类(仔细看前后两个链接的doc.stable和doc.dev之间的区别):

http://weka.sourceforge.net/doc.dev/index.html?weka/classifiers/meta/package-summary.html

不知道Weka开发人员的逻辑是什么??

还想吐槽的是,对于第三种方法MultiSearch,虽然很多人推荐使用(例如上面网友介绍的网页中。),但是都没说清楚怎么用。具体的方法是,可以在GitHub上其项目页面上下载:

https://github.com/fracpete/multisearch-weka-package

另外再吐槽一下,这么项目没有多少star啊,看来这年头用Weka的人真心不多了。更让人郁闷的是,这个页面里也没有一个详细的文档啊,只有这里给出了一些例子:

https://github.com/fracpete/multisearch-weka-package-examples

看了例子还是不明就里,例如下面这个链接中给出了J48自动调参的例子:

https://github.com/fracpete/multisearch-weka-package-examples/blob/master/src/main/java/com/github/fracpete/multisearch/optimize/J48ConfidenceFactor.java

但是我从头到尾没看到

    conf.setBase(10);
    conf.setMin(0.05);
    conf.setMax(0.75);
    conf.setStep(0.05);
    conf.setExpression("I");
    MultiSearch multi = new MultiSearch();
    multi.setClassifier(j48);

这些的具体含义,只能靠自己瞎猜。试了几次还是有各种莫名其妙的问题。决定还是使用CVParameterSelection了,给一些最简单的代码段:

CVParameterSelection ps = new CVParameterSelection();
ps.setClassifier(new RandomForest());
ps.setNumFolds(5);  // using 5-fold CV
ps.addCVParameter("I 20 200 10");
ps.addCVParameter("M 1 5 5");
ps.buildClassifier(trainingData);

把这些事情做完,简单来说说Weka存在的问题:

1.文档严重不全、滞后、stable版本的文档和实际上stable的版本不一致。

2.功能分割莫名其妙,为什么要把MultiSearch单独拿出来做一个package,这样会误导很多人的好不好。

3.Java代码还是要比Python啰嗦很多,也难怪最近用的人越来越少。

就简单吐槽这么多。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值