您的位置:首页 > 其它

Weka使用之属性选择

2016-09-26 14:25 183 查看
原文地址:Weka使用之属性选择作者:wbxjj转自:http://anna-zr.javaeye.com/blog/578943

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

在属性选择方面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;

public class SimpleAttributeSelection {

   

    public
static void main(String[] args) {

      
// TODO Auto-generated method stub

      
Instances trainIns = null;

      

      
try{

          

          

          
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);

          

          

          
Ranker rank = new Ranker();

          
InfoGainAttributeEval eval = new InfoGainAttributeeval_r();

          

          

          
eval.buildEvaluator(trainIns);

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

          

          

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

          

          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐