文档章节

weka特征选择之构建数据集

稀疏矩阵
 稀疏矩阵
发布于 2017/08/28 18:27
字数 460
阅读 22
收藏 1

1、weka数据集基本概念 

weka.core.Instances-拥有一个完整的数据集。这个数据结构是基于行的;单一的行可以通过从0开始索引的instance(int) 方法获得。有关列的信息可以通过attribute(int)方法获得。此方法返回 weka.core.Attribute对象。

 weka.core.Instance。-封装了一个单行。它基本上是一个双原语数组的包装。因为这个类不包含关于列的类型的任何信息,它总是需要访问weka.core.Instances对象。

weka.core.Attribute -拥有数据集中单个列的类型信息。它存储属性的类型,以及标称属性的标签,字符串属性可能的值或关系属性的数据集(这些也都是weka.core.Instances对象)。

2、手动构建weka数据输入Instances

    public Instances produceData(){

       Attribute length = new Attribute("length");

       Attribute weight = new Attribute("weight");

      

       // Create vector to hold nominal values "first", "second", "third"

       FastVector my_nominal_values = new FastVector(3);

       my_nominal_values.addElement("first");

       my_nominal_values.addElement("second");

       my_nominal_values.addElement("third");

      

       // Create nominal attribute "position"

       Attribute position = new Attribute("position", my_nominal_values);

      

       // Create vector of the above attributes

       FastVector attributes = new FastVector(3);

       attributes.addElement(length);

       attributes.addElement(weight);

       attributes.addElement(position);

      

       // Create the empty dataset "race" with above attributes

       Instances race = new Instances("race", attributes, 0);

      

       // Make position the class attribute

       race.setClassIndex(position.index());

      

       // Create empty instance with three attribute values

       Instance inst = new Instance(3);

      

       // Set instance's values for the attributes "length", "weight", and "position"

       inst.setValue(length, 5.3);

       inst.setValue(weight, 300);

       inst.setValue(position, "first");

      

       // Set instance's dataset to be the dataset "race"

       inst.setDataset(race);

       race.add(inst);

       return race;

    }

3、对输入的数据集Instances进行特征选择

    private ArffLoader loader;

    private Instances dataSet;

    private File arffFile;

    private int sizeOfDataset;

    private int numOfOldAttributes;

    private int numOfNewAttributes;

    private int classIndex;

    private int[] selectedAttributes;

 

    public WekaSelector(File file) throws IOException {

        loader = new ArffLoader();

        arffFile = file;

        loader.setFile(arffFile);

        dataSet = loader.getDataSet();

        sizeOfDataset = dataSet.numInstances();

        numOfOldAttributes = dataSet.numAttributes();

        classIndex = numOfOldAttributes - 1;

        dataSet.setClassIndex(classIndex);

    }

 

    public void select() throws Exception {

        ASEvaluation evaluator = new CfsSubsetEval();

        ASSearch search = new BestFirst();

        AttributeSelection eval = null;

 

        eval = new AttributeSelection();

        eval.setEvaluator(evaluator);

        eval.setSearch(search);

        

        Instances data = produceData();

        //eval.SelectAttributes(dataSet);

        eval.SelectAttributes(data);

       

        numOfNewAttributes = eval.numberAttributesSelected();

        selectedAttributes = eval.selectedAttributes();

        System.out.println("result is "+eval.toResultsString());

       // System.out.println("old number of Attributes is "+numOfOldAttributes);

        System.out.println("new number of Attributes is "+numOfNewAttributes);

        for(int i=0;i<selectedAttributes.length;i++){

            System.out.println(selectedAttributes[i]);

        }

    }

 

 

© 著作权归作者所有

共有 人打赏支持
稀疏矩阵
粉丝 2
博文 9
码字总数 2847
作品 0
私信 提问
Weka开发[4]-特征选择

特征选择,我对这一部分也不熟,大概讲一下,用AttributeSelection进行特征选择,它需要设置3个方面,第一:对属性评价的类(自己到Weka软件里看一下,英文Attribute Evaluator),第二:搜索...

pior
2015/10/17
214
0
用 WEKA 进行数据挖掘

什么是 数据挖掘?您会不时地问自己这个问题,因为这个主题越来越得到技术界的关注。您可能听说过像 Google 和 Yahoo! 这样的公司都在生成有关其所有用户的数十亿的数据点,您不禁疑惑,“它...

红薯
2010/05/21
10.5K
12
人工智能之机器学习与数据挖据之WEKA使用与实践

阅读对象 只要你想读,你就读呗!最好点个赞再走。。。:-) 本文尽量通过例子和直观描述,来说明人工智能中机器学习和数据挖据的主要概念,分类,和使用方法,并通过例子描述如何使用它来促进...

我是吴文华
05/18
0
0
面向零编程基础人员 | 最全数据科学和机器学习工具清单

编程是数据科学的重要组成部分,理解编程逻辑、循环和函数的开发者也更容易成为数据科学家。但是,对于那些未在大学时期学习过软件开发,或接触过编程语言的人们来说,就真的没办法涉足这一领...

DataHunter小数
06/06
0
0
安卓恶意软件检测:系统调用日志+机器学习算法

  本文内容源自Sanya Chaba等人的学术论文《Malware Detection Approach for Android systems Using System Call Logs》。   基于签名的静态检测技术广泛应用于安卓平台的恶意应用检测。...

嘶吼RoarTalk
01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
25
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
33
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
39
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
51
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部