weka之调用特征选择

参考文献
http://download.csdn.net/detail/kaikai_sk/9854774

package FilterTest;

import java.io.FileNotFoundException;
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 
{
    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
    {
        weka.filters.supervised.attribute.AttributeSelection filter=new 
                AttributeSelection();
        CfsSubsetEval eval=new CfsSubsetEval();
        GreedyStepwise search=new GreedyStepwise();
        filter.setEvaluator(eval);
        filter.setSearch(search);
        filter.setInputFormat(m_instances);

        System.out.println("number of instances attribute ="+
        m_instances.numAttributes());
        Instances selectedInstances=Filter.useFilter(m_instances, filter);
        System.out.println("number of selected instances attribute ="+
        selectedInstances.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);

        //进行十折交叉验证
        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 filterTest=new FilterTest();
        filterTest.getFileInstances("E:\\Program Files\\Weka-3-8\\data\\weather.nominal.arff");
        filterTest.selectAttUseFilter();
        filterTest.selectAttUseMc();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值