`
endual
  • 浏览: 3545702 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在java代码中调用weka,使用特征选择

    博客分类:
  • weka
 
阅读更多

package com.endual.paper.service.impls;
import weka.attributeSelection.*;
import weka.core.*;
import weka.core.converters.ConverterUtils.*;
import weka.classifiers.*;
import weka.classifiers.meta.*;
import weka.classifiers.trees.*;
import weka.filters.*;

import java.util.*;

/**
 * performs attribute selection using CfsSubsetEval and GreedyStepwise
 * (backwards) and trains J48 with that. Needs 3.5.5 or higher to compile.
 *
 * @author FracPete (fracpete at waikato dot ac dot nz)
 */
public class AttributeSelectionTest {

  /**
   * uses the meta-classifier
   */
  protected static void useClassifier(Instances data) throws Exception {
    System.out.println("\n1. Meta-classfier");
    AttributeSelectedClassifier classifier = new AttributeSelectedClassifier();
    CfsSubsetEval eval = new CfsSubsetEval();
    GreedyStepwise search = new GreedyStepwise();
    search.setSearchBackwards(true);
    J48 base = new J48();
    classifier.setClassifier(base);
    classifier.setEvaluator(eval);
    classifier.setSearch(search);
    Evaluation evaluation = new Evaluation(data);
    evaluation.crossValidateModel(classifier, data, 10, new Random(1));
    System.out.println(evaluation.toSummaryString());
  }

  /**
   * uses the filter
   */
  protected static void useFilter(Instances data) throws Exception {
    System.out.println("\n2. Filter");
    weka.filters.supervised.attribute.AttributeSelection filter = new weka.filters.supervised.attribute.AttributeSelection();
    CfsSubsetEval eval = new CfsSubsetEval();
    GreedyStepwise search = new GreedyStepwise();
    search.setSearchBackwards(true);
    filter.setEvaluator(eval);
    filter.setSearch(search);
    filter.setInputFormat(data);
    Instances newData = Filter.useFilter(data, filter);
    System.out.println(newData);
  }

  /**
   * uses the low level approach
   */
  protected static void useLowLevel(Instances data) throws Exception {
    System.out.println("\n3. Low-level");
    AttributeSelection attsel = new AttributeSelection();
    CfsSubsetEval eval = new CfsSubsetEval();
    GreedyStepwise search = new GreedyStepwise();
    search.setSearchBackwards(true);
    attsel.setEvaluator(eval);
    attsel.setSearch(search);
    attsel.SelectAttributes(data);
    int[] indices = attsel.selectedAttributes();
    System.out.println("selected attribute indices (starting with 0):\n" + Utils.arrayToString(indices));
  }

  /**
   * takes a dataset as first argument
   *
   * @param args        the commandline arguments
   * @throws Exception  if something goes wrong
   */
  public static void main(String[] args) throws Exception {
	
	 args = new String[1] ; 
	 args[0] = "weka_data\\data\\src_data\\paper.arff" ; //导入文件
	  
    // load data
    System.out.println("\n0. Loading data");
    DataSource source = new DataSource(args[0]);
    Instances data = source.getDataSet();
    if (data.classIndex() == -1)
      data.setClassIndex(data.numAttributes() - 1);

    // 1. meta-classifier
    useClassifier(data);

    // 2. filter
    useFilter(data);

    // 3. low-level
    useLowLevel(data);
  }
}

 

 

   项目结构图:肯定有人会问,这个训练文件是放在哪里的,文件夹怎样建?

 

 


 

 

 

运行的效果:因为涉及到论文的数据,用粗线覆盖了,抱歉无法提供完成的运行的结果

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 31.9 KB
  • 大小: 54.5 KB
分享到:
评论

相关推荐

    java中调用weka

    本文将介绍如何在Java中调用Weka,并对Weka中的主要组件进行介绍。 首先,我们需要了解Weka中的主要组件。Weka中有五种主要的组件:Instances、Filter、Classifiers/Clusterer、Evaluating、Attribute selection。...

    使用Eclipse在Java中调用weka

    接下来,为了在Java代码中使用Weka,你需要导入必要的类和方法。Weka的核心类库提供了一个名为Classifier的接口,用于表示所有的分类器。RBFtree是基于径向基函数的决策树算法,它继承自Classifier接口。因此,你...

    Java调用weka神经网络算法预测股票 代码及数据

    2. **加载数据**:使用Weka的`DataSource`类加载ARFF文件,将其转换为`Instances`对象,这是Weka中表示数据集的类。 3. **设置模型**:选择合适的神经网络模型,Weka提供了如MultiLayerPerceptron(多层感知器)等...

    Java实现对Weka算法的应用案例

    在Weka中,可以使用`DataSource`类读取CSV文件,将其转换为能够供算法使用的`Instances`对象。这一步通常包括设置数据属性类型、处理缺失值等预处理步骤。 4. **数据预处理**:在实际应用中,数据往往需要进行清洗...

    调用weka_MATLABWEKA_源码

    这个压缩包文件"调用weka"很可能包含了实现上述步骤的源代码,可能包括了数据转换的函数、模型训练和预测的函数,甚至可能有一些示例脚本来演示如何在MATLAB中使用Weka。对于想要在MATLAB中利用Weka进行机器学习的...

    「java调用Weka中神经网络的算法(从数据库中取数据)」.docx

    ### Java调用Weka中神经网络的算法(从数据库中取数据) #### 一、概述 本文档旨在介绍如何利用Java编程语言结合Weka库来实现神经网络算法,并且能够从数据库中读取数据来进行训练与预测的过程。Weka是一款非常强大...

    weka的JAVA程序

    4. **预处理**:在进行机器学习之前,通常需要对数据进行预处理,如缺失值处理、异常值检测、特征选择等。Weka 提供了一系列的过滤器(Filter)类,可以对数据集进行这些操作。 5. **学习器(Learner)**:Weka ...

    weka-3.7.3.jar- java开发包

    通过在 Java 项目中引入这个 JAR 包,开发者可以使用 Java 代码调用 Weka 的各种算法,进行数据处理和建模工作。例如,你可以创建一个 `DataSource` 对象加载数据,使用 `Classifier` 或 `Clusterer` 进行训练和预测...

    weka java 开发软件

    "weka.jar"是Weka的核心库,包含了所有预定义的数据挖掘算法和工具,开发者可以直接在Java代码中引用这个库,调用Weka的功能。而"weka_src.jar"则包含了Weka的源代码,这对于开发者来说非常宝贵,因为可以查看并理解...

    Weka开发----在代码中使用Weka.pdf

    本文主要讲解如何在Java代码中使用Weka的核心组件,包括Instances、Filter、Classifier/Clusterer、Evaluation以及Attribute Selection。 1. **Instances** Instances是Weka中的核心数据结构,用于存储数据集。它...

    weka开发java版jar包和源码

    这个文件是使用Weka进行数据挖掘的实际执行文件,用户可以通过命令行或者集成到其他Java项目中来调用Weka的各种机器学习算法,如分类、聚类、关联规则学习等。此外,它还包含了图形用户界面,使得非编程背景的用户也...

    weka-3-4-12.rar_SVM in JAVA_weka_weka平台实现

    Matlab是一个强大的数值计算环境,它允许用户进行复杂的数学运算和数据分析,而将Java与Matlab结合,可以通过Matlab Compiler将Matlab代码转换为Java可调用的形式,以便在更广泛的环境中使用。 "可结合Spiker联合...

    weka 源代码及其分析

    - **朴素贝叶斯**(Naive Bayes):Weka中的朴素贝叶斯算法实现了多项式分布和伯努利分布两种模型。源代码中可以看到,算法通过计算特征在各个类别上的概率来预测新样本的类别。 - **决策树**(Decision Trees):...

    Java实现随机森林算法

    在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...

    WekaAPI:这是在没有GUI的情况下在Java中使用Weka pkg的代码

    在提供的压缩包文件“WekaAPI-master”中,可能包含的是一个示例项目,它展示了如何在实际的Java代码中应用WekaAPI。你可以通过查看源代码,了解具体的实现细节和用法。通过深入学习和实践,你将能够熟练地利用Weka...

    weka-src.zip_FPGROWTH.java weka_fpgrowth weka_weka_weka src

    这个压缩包`weka-src.zip`包含了Weka的核心源代码,特别是`FPGROWTH.java`,它是Weka中实现频繁项集挖掘算法FPGrowth的源文件。通过对这些源代码的学习和分析,我们可以深入了解Weka的工作机制以及FPGrowth算法的...

    Groovy调用Weka生成决策树

    总的来说,Groovy的动态特性和与Java的紧密集成,使得它成为调用Weka进行数据挖掘任务的一个理想选择。通过以上步骤,你可以轻松地在Groovy脚本中构建和应用决策树模型。在实际工作中,不断探索和优化模型参数,以及...

    Weka源码及中文文档

    API则允许高级用户通过Java代码调用Weka的功能,实现自动化和定制化的数据挖掘流程。 **Weka源码学习指南** 1. **了解数据结构**:理解Weka中如何表示数据集(Instances)和属性(Attribute)是深入学习的基础。 2...

Global site tag (gtag.js) - Google Analytics