利用weka.jar算法改进

如下,其中KNN_lsh extends Classifier,并实现了buildClassifier函数和distributionForInstance函数。以下只是类中代码片段,用以说明如何利用weka.jar去做测试等

    public static void main(String[] args) throws Exception {
        Instances train=DataSource.read("C:\\Users\\Harry\\Desktop\\ceshi\\breast-cancer.arff");
        train.setClassIndex(train.numAttributes()-1);       
        Instances test = DataSource.read("C:\\Users\\Harry\\Desktop\\ceshi\\breast-cancer-test.arff");
        test.setClassIndex(test.numAttributes()-1);      
        if (!train.equalHeaders(test)) {
            throw new Exception("测试集和训练集不同");
        }

        KNN_lsh classifier=new KNN_lsh();
        classifier.buildClassifier(train);

        for (int i = 0; i < test.numInstances(); i++) {
            double pred = classifier.classifyInstance(test.instance(i));
            double[] dist = classifier.distributionForInstance(test.instance(i));
            System.out.print((i + 1) + "   "
                    + test.instance(i).toString(test.classIndex()) + "   "
                    + test.classAttribute().value((int) pred) + "   ");
            if (pred != test.instance(i).classValue()) {
                System.out.print("wrong");
            } else {
                System.out.print("correct");
            }
            System.out.println("   " + Utils.arrayToString(dist));
//            System.out.println(pred);

        }
    }



输出如下:

1   no-recurrence-events   no-recurrence-events   correct   0.8333333333333334,0.16666666666666666
2   no-recurrence-events   no-recurrence-events   correct   0.5,0.5
3   no-recurrence-events   no-recurrence-events   correct   0.5833333333333334,0.4166666666666667
4   no-recurrence-events   recurrence-events   wrong   0.4166666666666667,0.5833333333333334
5   no-recurrence-events   no-recurrence-events   correct   0.8333333333333334,0.16666666666666666
6   no-recurrence-events   no-recurrence-events   correct   0.6666666666666666,0.3333333333333333
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中使用Weka的Logistic算法,你需要按照以下步骤进行操作: 1. 首先,确保你已经装了Weka库。你可以从Weka官方网站(https://www.cs.waikato.ac.nz/ml/weka/)下载并安装Weka。 2. 在Java项目中导入Weka库。你可以通过在你的项目中添加WekaJAR文件来实现。具体的步骤可以根据你使用的IDE来进行操作。 3. 创建一个实例对象,用于加载和处理数据。例如,你可以使用`weka.core.Instances`类来加载数据集,代码如下: ```java import weka.core.Instances; import java.io.BufferedReader; import java.io.FileReader; // 加载数据集 BufferedReader reader = new BufferedReader(new FileReader("path/to/your/dataset.arff")); Instances data = new Instances(reader); reader.close(); data.setClassIndex(data.numAttributes() - 1); // 设置类别属性 ``` 4. 创建Logistic分类器对象并进行训练。你可以使用`weka.classifiers.functions.Logistic`类来创建Logistic分类器,并使用数据进行训练,代码如下: ```java import weka.classifiers.functions.Logistic; // 创建Logistic分类器对象 Logistic classifier = new Logistic(); // 训练分类器 classifier.buildClassifier(data); ``` 5. 进行预测。你可以使用训练好的Logistic分类器对新数据进行预测,代码如下: ```java import weka.core.Instance; // 创建新的实例 Instance newInstance = new DenseInstance(data.numAttributes()); newInstance.setDataset(data); // 设置实例的属性值 // 进行预测 double prediction = classifier.classifyInstance(newInstance); System.out.println("预测结果:" + prediction); ``` 这些是在Java中使用Weka的Logistic算法的基本步骤。你可以根据自己的需求进行进一步的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值