Weka Java中makeCopy方法找不到符号问题及替代方案咨询
解决Weka中
Classifier.makeCopy()方法不存在的问题 嘿,这个问题我帮不少人解决过——Weka里Classifier.makeCopy()找不到确实挺坑的,毕竟官方文档有时候更新没跟上API变动。给你几个实用的替代方案:
改用
AbstractClassifier.makeCopy()方法
其实Classifier接口本身从来就没有makeCopy方法,这个方法一直是在它的抽象实现类AbstractClassifier里的。你只需要把代码改成下面这样就行:Classifier clsCopy = AbstractClassifier.makeCopy(cls);别忘了导入
weka.classifiers.AbstractClassifier这个包哦。手动实现深度克隆(备用方案)
如果你的分类器实现了Serializable接口(Weka里绝大多数分类器都满足这个条件),可以用序列化的方式手动实现深度克隆,代码示例如下:import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public static Classifier cloneClassifier(Classifier cls) throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(cls); oos.flush(); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bis); return (Classifier) ois.readObject(); }之后直接调用这个方法就能复制分类器了:
Classifier clsCopy = cloneClassifier(cls);检查版本与导入包是否匹配
最后别忘了确认你使用的Weka版本和官方文档的版本一致,有些旧文档还在引用过时的写法。另外检查一下导入的Classifier是不是weka.classifiers.Classifier,别不小心导入了其他同名类。
内容的提问来源于stack exchange,提问作者User505
相关产品推荐
相关产品推荐

