`

Weka开发[2]-分类器类

 
阅读更多

     这次介绍如何利用weka里的类对数据集进行分类,要对数据集进行分类,第一步要指定数据集中哪一列做为类别,如果这一步忘记了(事实上经常会忘记)会出现Class index is negative (not set)!这个错误,设置某一列为类别用Instances类的成员方法setClassIndex,要设置最后一列为类别则可以用Instances类的numAttributes()成员方法得到属性的个数再减1

    然后选择分类器,比较常用的分类器有J48NaiveBayesSMOLibSVMJava版的,可以在weka中使用,但要设置路径),训练分类器使用J48buildClassifier(注意J48还有别的分类器它们都继承自Classifier类,使用方法都差不多),分类数据用J48类中的classifyInstance方法,例中使用的数据集为contact-lenses.arff,分类结果为2.0,结果为2.0的原因是:首先用文本编辑器打开数据集,有一行为@attribute contact-lenses {soft, hard, none},而第一个样本为young, myope, no, reduced, none,最后一列为类别,也就是contact-lences为类别,第一个样本的类别为none,在属性说明中none为第二个所以为2.0(从0开始数)。

package com.cizito.weka.study;

import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.functions.SMO;
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

/**
 * @author zhangwei
 *
 */
public class ClassifierTest {

	private Instances m_instances = null;
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{

		ClassifierTest ctest = new ClassifierTest();
        ctest.getFileInstances( "D:/ProgramFiles/Weka-3-6/data/contact-lenses.arff");
        ctest.classify();
	}
	

	   
    public void getFileInstances( String fileName ) throws Exception {
    	
    	DataSource frData = new DataSource( fileName );
        m_instances = frData.getDataSet();
       
        m_instances.setClassIndex( m_instances.numAttributes()-1);
    }
   
    public void classify() throws Exception {
        //J48 classifier = new J48();
        NaiveBayes classifier = new NaiveBayes();
        //SMO classifier = new SMO();
       
        classifier.buildClassifier( m_instances );
        System.out.println( classifier.classifyInstance( m_instances.instance( 0 ) ) );
    }
   
   
}

 

分享到:
评论

相关推荐

    Weka-3-6.zip

    Weka,全称为Waikato Environment for Knowledge Analysis,是一款由新西兰怀卡托大学开发的开源数据挖掘和机器学习软件。这个软件包,即Weka-3-6.zip,包含了丰富的算法库、可视化工具以及用于处理和分析数据的实用...

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

    在开发过程中,集成Weka这一强大的机器学习工具可以帮助我们快速构建和评估模型。Weka提供了丰富的API,使得在代码中使用变得简单。本文主要讲解如何在Java代码中使用Weka的核心组件,包括Instances、Filter、...

    graphviz-treevisualize-weka-package-2014.8.1.zip

    总的来说,"graphviz-treevisualize-weka-package-2014.8.1.zip" 提供的混淆矩阵可视化扩展包是Weka的一个重要补充,它通过图形化的方式增强了用户对分类器性能的理解,同时展示了开源项目如何通过创新和协作提升...

    weka源码学习

    Weka开发[2]-分类器类 2 Weka开发[3]-Evaluation类 3 Weka开发[4]-特征选择 4 Weka开发[5]-半监督算法 6 Weka开发[0]-导入Weka包 8 半监督算法工具SVMlin使用 12 半监督算法工具SVMlin读取数据代码...

    weka-3-8-0.zip

    这个"weka-3-8-0.zip"压缩包包含了Weka的3.8.0版本,这是一个开源软件,由新西兰怀卡托大学的信息科学系开发并维护。Weka的核心是用Java编写的,因此它具有跨平台的特性,可以在多种操作系统上运行。 **1. Weka的...

    weka-3-7-1

    3. **Naive Bayes**:基于贝叶斯定理的分类器,假设特征之间相互独立,尽管这种假设在实际问题中往往过于理想化,但在许多情况下仍然表现出色。 4. **SVM(支持向量机)**:通过构建最大间隔超平面将数据分为两类,...

    Weka各类分类器的使用(Java)

    本文将详细介绍如何使用Weka在Java中实现分类器的使用,包括配置MyEclipse2013+Weka3.6+libsvm3.18+Jdk1.7+Win8.1环境,使用Weka实现分类器的步骤,以及使用LibSVM实现分类器的步骤。 一、配置环境 在使用Weka之前...

    weka使用手册3-6-1

    - **训练分类器**:使用`java weka.classifiers.trees.J48 -t train.arff -T test.arff -p 2 -d model.model`命令训练J48决策树分类器。 - **应用过滤器**:使用`weka.filters.unsupervised.attribute.Remove -i ...

    weka-3.7.3.jar- java开发包

    - **分类与回归**:支持多种监督学习算法,如决策树(C4.5, ID3)、贝叶斯分类器(Naive Bayes)、支持向量机(SVM)、神经网络等。 - **聚类**:无监督学习算法,如K-means、EM(期望最大化)、层次聚类等。 - *...

    weka-3-6-10.zip

    在Weka中,可以使用内置的分词器或者自定义的分词规则对文本数据进行处理,以提取关键信息。 数据挖掘是发现数据中隐藏模式的过程。在Weka中,用户可以选择多种算法,如决策树(如C4.5和ID3)、支持向量机(SVM)、...

    weka-src[weka源码]

    2. **理解数据结构**:Weka中大量使用了特定的数据结构来表示数据集和模型,如Instances类用于表示数据集,Classifier用于表示分类模型等。 3. **熟悉Java编程**:Weka是用Java编写的,因此掌握Java编程语言是必不可...

    基于weka的数据分类分析实验报告(精选)

    **基于Weka的数据分类分析实验报告** 在信息技术领域,数据挖掘是至关重要的组成部分,它从海量数据中提取有价值的信息和知识。Weka是一款强大的、开源的机器学习和数据挖掘工具,广泛应用于教育和研究领域。本实验...

    weka 稳定版3-6-13 (包括32位和64位)

    2. **分类算法**:Weka包含了多种经典的分类算法,如决策树(C4.5、ID3)、贝叶斯分类(Naive Bayes)、SVM(Support Vector Machines)以及神经网络等。这些算法各有优势,适应不同的数据特性和应用场景。 3. **...

    数据挖掘开源工具weka 3-6-1

    2. **分类算法**:Weka包含了多种经典的分类算法,如决策树(C4.5, ID3)、贝叶斯网络(Naive Bayes)、支持向量机(SVM)、神经网络、随机森林等。这些算法各有优缺点,适用于不同的数据类型和问题场景。 3. **...

    热门在MATLAB中运行WEKA分类器:这是一个如何从MATLAB中选择参数并将其传递给Weka的示例-matlab开发

    在MATLAB中运行Weka分类器是一个非常实用的技术,它结合了MATLAB的强大计算能力和Weka的丰富机器学习算法库。Weka是一个开源的数据挖掘工具,包含了大量的预处理方法、分类器、聚类器和关联规则算法。MATLAB则是一个...

    基于Weka的数据分类分析实验报告范文.docx

    Weka是由新西兰怀卡托大学开发的一款开源软件,它支持在多种操作系统上运行,涵盖了回归、分类、聚类、关联规则和属性选择等多种数据挖掘任务。Weka提供了一个直观的用户界面,用户可以通过菜单选择不同的学习算法,...

    weka开发java版jar包和源码

    例如,以下是一个简单的Java代码片段,展示了如何使用Weka的朴素贝叶斯分类器(NaiveBayes): ```java import weka.classifiers.bayes.NaiveBayes; import weka.core.Instances; // 加载数据 Instances data = ...

    java机器学习WEKA 3-5-5 Explorer 用户指南

    - **分类器输出文本**:显示分类器的输出信息,包括模型参数、评估指标等。 - **结果列表**:列出所有分类结果的详细信息,方便用户对比不同分类器的表现。 #### 5. 聚类 **聚类**是指将相似的数据对象分组在一起...

    weka二次开发代码分析

    主要的类有`Instances`(表示数据集)、`Classifier`(表示分类器)和`Filter`(表示数据预处理)。通过继承这些类或实现相应的接口,开发者可以创建自定义的算法。 2. **源码分析** Weka的源码是开放的,可以在其...

Global site tag (gtag.js) - Google Analytics