使用保存的模型进行预测(使用Weka,Eclipse+Java)

我对代码行”Instances originalTrain=”的参数感到困惑。作为Weka的新手,我希望有人能帮助我纠正这个错误。我们正在使用Java和Weka创建一个疾病预测系统。

import weka.classifiers.Classifier;import weka.core.Instances;public class Main {    public static void main(String[] args) throws Exception    {        String rootPath="/some/where/";         Instances originalTrain= //在这里添加实例(不知道如何完成这个语句)        //加载模型        Classifier cls = (Classifier) weka.core.SerializationHelper.read(rootPath+"tree.model");        //预测实例类值        Instances originalTrain= //加载或创建要预测的Instances(这个语句也是)        //要预测哪个实例的类值        int s1=0;        //执行预测        double value=cls.classifyInstance(originalTrain.instance(s1));        //获取预测百分比或分布        double[] percentage=cls.distributionForInstance(originalTrain.instance(s1));        //获取类值的名称        String prediction=originalTrain.classAttribute().value((int)value);         System.out.println("实例的预测值 "+                            Integer.toString(s1)+                            ": "+prediction);         //格式化分布        String distribution="";        for(int i=0; i <percentage.length; i=i+1)        {            if(i==value)            {                distribution=distribution+"*"+Double.toString(percentage[i])+",";            }            else            {                distribution=distribution+Double.toString(percentage[i])+",";            }        }        distribution=distribution.substring(0, distribution.length()-1);        System.out.println("分布:"+ distribution);    }}

回答:

为了完整起见,问题中的代码片段来源于使用自己的Java代码和模型在Weka中获取预测百分比

originalTrain应该是你的训练实例。我知道有两种方法可以向originalTrain添加实例。

  1. 这种方法从.arff文件加载数据,基于这里的说明。

    // rootPath应该是.arff文件所在的位置// filename应该包含.arff文件的完整名称public static Instances instanceData(String rootPath, String filename) throws Exception{   // 初始化源   DataSource source = null;  Instances data = null;  source = new DataSource(rootPath + filename);  data = source.getDataSet();
    // 将类设置为数据的最后一个属性(可能需要调整) if (data.classIndex() == -1) data.setClassIndex(data.numAttributes() -1 ); return data;}

  2. 你可以按照这个回答中描述的方式手动创建和添加实例使用Weka API定义聚类输入数据

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注