文档章节

Weka开发[4]-特征选择

pior
 pior
发布于 2015/10/17 22:31
字数 346
阅读 242
收藏 1

       特征选择,我对这一部分也不熟,大概讲一下,用AttributeSelection进行特征选择,它需要设置3个方面,第一:对属性评价的类(自己到Weka软件里看一下,英文Attribute Evaluator),第二:搜索的方式(自己到Weka软件里看一下,英文Search Method),第三:就是你要进行特征选择的数据集了。最后调用Filter的静态方法userFilter,感觉写的都是废话,一看代码就明白了。唯一值得一说的也就是别把AttributeSelection的包加错了,代码旁边有注释。

       另一个函数懒的解释了(它也不是我写的),基本上是自解释的,不太可能看不懂。

package instanceTest;
 
import java.io.FileReader;
import java.util.Random;
 
import weka.attributeSelection.CfsSubsetEval;
import weka.attributeSelection.GreedyStepwise;
import weka.classifiers.Evaluation;
import weka.classifiers.meta.AttributeSelectedClassifier;
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.filters.Filter;
import weka.filters.supervised.attribute.AttributeSelection;
 
public class FilterTest{
    private Instances m_instances = null;
    
    public void getFileInstances( String fileName ) throws Exception {
        FileReader frData = new FileReader( fileName );
        m_instances = new Instances( frData );
        
        m_instances.setClassIndex( m_instances.numAttributes() - 1 );
    }
    
    public void selectAttUseFilter() throws Exception {
        AttributeSelection filter = new AttributeSelection();  // package weka.filters.supervised.attribute!
        CfsSubsetEval eval = new CfsSubsetEval();
        GreedyStepwise search = new GreedyStepwise();
        filter.setEvaluator(eval);
        filter.setSearch(search);
        filter.setInputFormat( m_instances );
        
        System.out.println( "number of instance attribute = " + m_instances.numAttributes() );
        
        Instances selectedIns = Filter.useFilter( m_instances, filter);
        System.out.println( "number of selected instance attribute = " + selectedIns.numAttributes() );
    }
    
    public void selectAttUseMC() throws Exception {   
         AttributeSelectedClassifier classifier = new AttributeSelectedClassifier();
         CfsSubsetEval eval = new CfsSubsetEval();
         GreedyStepwise search = new GreedyStepwise();
         J48 base = new J48();
         classifier.setClassifier( base );
         classifier.setEvaluator( eval );
         classifier.setSearch( search );
         // 10-fold cross-validation
         Evaluation evaluation = new Evaluation( m_instances );
         evaluation.crossValidateModel(classifier, m_instances, 10, new Random(1));
         System.out.println( evaluation.toSummaryString() );
    }
    
    public static void main( String[] args ) throws Exception {
        FilterTest filter = new FilterTest();
        
        filter.getFileInstances( "F://Program Files//Weka-3-4//data//soybean.arff");
        filter.selectAttUseFilter();
        
        filter.selectAttUseMC();
    }
 
}


本文转载自:

共有 人打赏支持
pior
粉丝 25
博文 151
码字总数 22496
作品 0
济南
高级程序员
数据挖掘简述和weka介绍--数据挖掘学习和weka使用(一)

写在开篇 weka用了一些时日了,觉得真心不错。功能很完善,而且是开源的。最重要的扩展方便,非常适合搞研究和做全国大学生数学建模之类的比赛。 我学习weka主要是看的一本数据挖掘和weka使用...

长平狐
2013/11/25
809
0
Weka manual 3.6翻译: 1.1 简介

第一章 Weka命令行入门 1.1简介 在最初的实验,Weka所包含的图形用户界面是相当足够,若深入使用则建议使用命令行界面,因为它提供了一些功能(这些功能在图形用户界面下不可用) - 并使用少...

Honghe
2012/11/24
0
0
推荐:六款强大的开源数据挖掘工具

在互联网发展到大数据时代,那么数据就等于金钱。随着向一个基于应用的领域过渡,数据则呈现出了指数级增长。然而,百分之八十的数据是非结构化的,因此它需要一个程序和方法来从中提取有用信...

勿忘初心321
2016/08/18
209
0
人工智能之机器学习与数据挖据之WEKA使用与实践

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

我是吴文华
05/18
0
0
六款值得推荐的数据挖掘得力助手

当今这个时代,说数据就是金钱一点都不夸张。随着向一个基于应用的领域过渡,数据则呈现出了指数级增长。然而,大部分数据是非结构化的,因此需要一个程序和方法来从中提取有用信息,并且将其...

HappyBKs
2014/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

异步化,高并发大杀器

今天来聊聊如何让项目异步化的一些事。 在进入正文之前,顺便给大家推荐一个Java架构方面的交流学习群:698581634,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分...

Java大蜗牛
7分钟前
0
0
织梦dedecms安全设置

网站本身做好防范: 1、修改默认后台名。 打开网站根目录,找到[dede],这个文件夹就是后台的路径,可以随意修改,比如修改为[adminbuy],此时后台登陆的路径为:http://www.*****.com/admi...

雨季2014
7分钟前
0
0
完美Python入门基础知识点总结,看完你的Python就完全入门了!

Python标识符 在 Python 里,标识符有字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线...

糖宝lsh
14分钟前
0
0
Java关于前后台传输中文乱码以及Excel下载乱码解决

针对乱码,一般情况是前后台以及中间件编码格式不同导致.故需要保证编码格式相同即可. 1.前台页面格式指定,这里用的是jsp,故需要将pageEncoding指定为"UTF-8" 2.指定服务器编码格式,比如用的t...

勤奋的蚂蚁
16分钟前
0
0
Flutter组件 - Flexible

Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。 Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平方向,Column在垂直方向),但是...

一箭落旄头
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部