转自:
http://blog.sina.com.cn/s/blog_591e979d0100kds0.html
在这一节我们看看属性选择。在数据挖掘的研究中,通常要通过距离来计算样本之间的距离,而样本距离是通过属性值来计算的。我们知道对于不同的属性,它们在样本空间的权重是不一样的,即它们与类别的关联度是不同的,因此有必要筛选一些属性或者对各个属性赋一定的权重。这样属性选择的方法就应运而生了。
在属性选择方面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);
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的使用总结,包括算法选择、属性选择、参数优化.doc
机器学习工具WEKA的使用总结,包括算法选择、属性选择、参数优化.pdf
Weka的使用方法 一、是将一种学习方法应用于一个数据集,然后分析其输出,从而更多地了解这些数据(分析数 据集的潜在知识)。 二、是使用已学习到的模型对新的实例做出分类预测 三、是应用几种不同的学习器,再根据...
机器学习工具WEKA地使用总结材料,包括算法选择、属性选择、全参数优化.doc
WEKA把分类(Classification)和回归...在WEKA中,待预测的目标(输出)被称作Class属性,这应该是来自分类任务的“类”。一般的,若Class属性是分类型时我们的任务才叫分类,Class属性是数值型时我们的任务叫回归。
这是个数据挖掘的程序,数据的属性大于十三万维,所以先采用了weka的特征选择进行降维,然后用weka训练一个model,分类的时候就是调用这个model来分类。自己写的代码都在weka.user包中。
选择刚创建的项目WEKA-Rebuild,run as Java Application,等待弹出对话框选择主类,weka.gui.main(输入main即可看到)。不一会,WEKA界面出现,和开始菜单里运行的WEKA效果一样。重编译成功。 注意点:可能加载的...
现有某高校评教数据(pjsj.xls),共计842门课程,属性包括:课程名称、评价人数、总平均分以及10个评价指标Index1-Index10。以此为研究数据,利用数据挖掘的技术实现评价指标的筛选,即从10个指标中剔除对教学评价...
数据集是来源于 University of California, Irvine(UCI)机器学习数据库中的 Pima Indian Diabetes 数据集,总共包含 768 条数据项。...数据集已转arff格式(其实与csv格式差不多可自行修改),可用于weka。
图1 Weka主界面 Weka系统包括处理标准数据挖掘问题的所有方法:回归、分类、聚类、关联规则以及属性选择。分析要进行处理的数据是重要的一个环节,Weka提供了很多用于数据可视化和与处理的工具。输入数据可以有两种...
Weka期货数据挖掘中连续属性划分策略研究.pdf
图1Weka主界面 Weka系统包括处理标准数据挖掘问题的所有方法:回归、分类、聚类、关联规则以及属性选择。分析要进行处理的数据是重要的一个环节,Weka提供了很多用于数据可视化和与处理的工具。输入数据可以有两种...
在这里,我想展示如何使用Weka API探索一些强大的工具,例如分类(有监督和无监督),一些过滤器(离散化,属性选择等),如何进行装袋,提升和其他强大的元分类技术,所有数据科学家工具箱中都需要具备这些技术。...
1. weka软件,机器学习的一个好软件。下载之后,可以更好学习。 2. 读取属性,属性取值,数据,更方便。 3. 与导入 jdom.jar包方法一样。
若所采用的 数据集中存在大量的与实验无关的属性,则需要使用weka平台的Filter(过滤器)实现属 性的筛选。 实验所需的训练集和测试集均为iris.arff。 四、实验过程及结果 应用iris数据集,分别采用LibSVM、C4.5决策树...
针对ID3算法偏向于选择取值较多的属性作为测试属性的缺点,引入OneR算法选择属性的相关子集进行分类,降低无关属性和重复属性对分类的影响。实验结果表明,与ID3算法相比优化后的方案提高了ID3算法的分类准确率,降低了...
b引入属性重要度概念来弥补ID3算法属性选择标准的不足; c综合a和b来实现新的属性选择标准即属性重要度简化标准。在开源的Weka数据挖掘软件环境下进行仿真实验, 结果表明该改进算法是可行的, 并且在算法的计算时间和...
WEKA简介 数据格式 数据准备 属性选择 可视化分析 分类预测 关联分析 聚类分析 扩展WEKA
(2)熟练使用weka实现上述两种数据挖掘算法,并对训练出的模型进行测试和评价 。 2 实验基本内容 本实验的基本内容是通过基于weka实现两种常见的数据挖掘算法(决策树C4.5和朴素 贝叶斯),分别在训练数据上训练出...