在这一节我们看看属性选择。在数据挖掘的研究中,通常要通过距离来计算样本之间的距离,而样本距离是通过属性值来计算的。我们知道对于不同的属性,它们在样本空间的权重是不一样的,即它们与类别的关联度是不同的,因此有必要筛选一些属性或者对各个属性赋一定的权重。这样属性选择的方法就应运而生了。

在属性选择方面InfoGain和GainRatio的比较常见,也是最通俗易懂的方法。它们与Decision Tree的构造原理比较相似,哪个节点拥有的信息量就为哪个节点赋较高的权重。其它的还有根据关联度的办法来进行属性选择(Correlation-based Feature Subset Selection for Machine Learning)。具体它的工作原理大家可以在网上看论文。

现在我将简单的属性选择实例给大家展示一下:

package com.csdn;

import java.io.File;

import weka.attributeSelection.InfoGainAttributeEval;

import weka.attributeSelection.Ranker;

import weka.classifiers.Classifier;

import weka.core.Instances;

import weka.core.converters.ArffLoader;

/*

* Date: 2009.4.4

* by: Wang Yi

* Email: wangyi19840906@yahoo.com.cn

* QQ: 270135367

*

*/

public class SimpleAttributeSelection {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Instances trainIns = null;

try{

/*

* 1.读入训练

* 在此我们将训练样本和测试样本是由weka提供的segment数据集构成的

*/

File file= new File("C://Program Files//Weka-3-6//data//segment-challenge.arff");

ArffLoader loader = new ArffLoader();

loader.setFile(file);

trainIns = loader.getDataSet();

//在使用样本之前一定要首先设置instances的classIndex,否则在使用instances对象是会抛出异常

trainIns.setClassIndex(trainIns.numAttributes()-1);

/*

* 2.初始化搜索算法(search method)及属性评测算法(attribute evaluator)

*/

Ranker rank = new Ranker();

InfoGainAttributeEval eval = new InfoGainAttributeEval();

/*

* 3.根据评测算法评测各个属性

*/

eval.buildEvaluator(trainIns);

//System.out.println(rank.search(eval, trainIns));

/*

* 4.按照特定搜索算法对属性进行筛选

* 在这里使用的Ranker算法仅仅是属性按照InfoGain的大小进行排序

*/

int[] attrIndex = rank.search(eval, trainIns);

/*

* 5.打印结果信息

* 在这里我们了属性的排序结果同时将每个属性的InfoGain信息打印出来

*/

StringBuffer attrIndexInfo = new StringBuffer();

StringBuffer attrInfoGainInfo = new StringBuffer();

attrIndexInfo.append("Selected attributes:");

attrInfoGainInfo.append("Ranked attributes:/n");

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

attrIndexInfo.append(attrIndex[i]);

attrIndexInfo.append(",");

attrInfoGainInfo.append(eval.evaluateAttribute(attrIndex[i]));

attrInfoGainInfo.append("/t");

attrInfoGainInfo.append((trainIns.attribute(attrIndex[i]).name()));

attrInfoGainInfo.append("/n");

}

System.out.println(attrIndexInfo.toString());

System.out.println(attrInfoGainInfo.toString());

}catch(Exception e){

e.printStackTrace();

}

}

}

在这个实例中,我用了InfoGain的属性选择类来进行特征选择。InfoGainAttributeEval主要是计算出各个属性的InfoGain信息。同时在weka中为属性选择方法配备的有搜索算法(seacher method),在这里我们用最简单的Ranker类。它对属性进行了简单的排序。在Weka中我们还可以对搜索算法设置一些其它的属性,例如设置搜索的属性集,阈值等等,如果有需求大家可以进行详细的设置。

在最后我们打印了一些结果信息,打印了各个属性的InfoGain的信息。

Weka学习四(属性选择)相关推荐

  1. Java学习day078 Swing用户界面组件(四:选择组件)(复选框、单选钮、边框、组合框、滑动条)

    使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day078   Swing用户界面组件(四:选择组件)(复选框.单选钮.边框.组合框.滑动条) 前 ...

  2. CSS快速学习2:选择符权重和字体类属性

    选择符的权重: CSS中用四位数字表示权重. 类型选择符的权重为0001 class选择符的权重为0010 id选择符的权重为0100 子选择符的权重为0000 属性选择符的权重为0010 伪类选择符 ...

  3. 机器学习之 weka学习(一)weka介绍,安装和配置环境变量

    本部分详情可查看博客http://blog.csdn.net/u011067360/article/details/20844443                                   ...

  4. 决策树-特征属性选择划分

    决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别.使用决策树进行决策的过程就是从根节点开始 ...

  5. 数据挖掘工具软件Weka学习教程

    一.数据格式 理解数据格式后,就可以完全控制数据预处理过程. 1.1 ARFF格式 样例 说明 %整行注释 @relation person @attribute name string %半行注释 ...

  6. Linux学习(四)

    Linux学习(四) 用户身份与文件权限 用户身份与能力 linux系统中的管理员就是root,这是错误的,linux系统的管理员之所以是root,并非是他的名字叫root,而是因为该用户的身份号码即 ...

  7. 【人工智能】深度学习、数据库选择和人工智能的革命;人工智能是解锁IoT潜力的钥匙

    深度学习(DL)和人工智能(AI)已经不再是科幻小说中遥不可及的目标,目前已成为了互联网和大数据等领域的前沿研究内容. 由于云计算提供强的计算能力.提出的先进算法以及充裕的资金,这创造了五年前难以想象 ...

  8. 缺氧游戏超级计算机在哪里研究,缺氧小人属性选择指南

    缺氧是一款外太空生存类游戏,玩家在选择小人时需要考虑多项属性,可能一些新玩家不太清楚,下面一起来看看小人属性选择指南吧. 1兴趣选择 1.1兴趣数选择 众所周知,小人的兴趣数分为单项兴趣+7.两项兴趣 ...

  9. arcgis属性表选择两个条件_arcgis中按属性选择的小技巧

    今天恰好又用到了ArcGIS,不过在属性表中选择字段的时候,发现自己遇到了一点点疑惑,相信也存在和我有同样遭遇的同学,因此,我决定写一些关于属性选择的技巧,仅仅是自己的学习笔记,以便之后运用回忆,同时 ...

最新文章

  1. 面试官:给我说一下 Spring MVC 拦截器的原理?
  2. 数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量
  3. loadrunner controller:实时查看VUser的运行情况
  4. 安装Vim,提示“Could not get lock......”
  5. 由遍历序列构造二叉树
  6. 【简报】帮助你免费制作单页面个人网站
  7. 1 恢复MySQL误删数据
  8. 智能优化算法:闪电连接过程算法 - 附代码
  9. ftp协议是一种用于什么的协议_购房协议怎么写?签购房协议要注意什么
  10. 《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——3.3 MRP结果评估概览...
  11. vSphere虚拟网络02 - 虚拟交换机
  12. ES 索引mapping之keyword;term查询添加keyword查询;更改mapping keyword类型
  13. drools学习笔记-rule组织方式
  14. 偏流角为什么是arcsin(w/V)
  15. 阿里云抗ddos云防护服务器基础防护介绍
  16. python代码画玫瑰花_python绘制玫瑰
  17. 浅析瞬态抑制二极管双向tvs管
  18. canvas绘制海报分享,海报中设置圆角二维码
  19. 50岁的程序员还奋战一线,软件测试能干到多少岁?有年龄限制吗?
  20. Mac 修改maven 配置

热门文章

  1. Java中用ClassLoader载入各种资源(类、文件、web资源)的方法
  2. Tomcat8源码编译及导入Eclipse中研究
  3. Python中的除法 整除 非整除
  4. 鸟哥的Linux私房菜(服务器)- 簡易 APT/YUM 伺服器設定
  5. Python爬虫入门(1):综述
  6. 面试时算法题的解答思路
  7. Stanford UFLDL教程 线性解码器
  8. 排序的概念(选择排序1)
  9. JAVA基础实例(一)
  10. tbox新增stackless协程支持