OneR算法和weka中OneR使用--数据挖掘学习和weka使用(四)

OneR算法简介

OneR又称1-R,是1993出现的一种极为简单的分类算法模型,它可以产生一个单层的决策树。

OneR算法是一个简单、廉价的方法,但是常常能够获得一个非常好的结果,用于描述数据中的结构。

OneR算法的使用非常广泛,可以简单的得到一个对数据的概括性了解,有时候甚至可以直接获得结果。

OneR算法实现

OneR的思路很简单,建立一个只针对于单个属性进行测试的规则,并进行不同的分支。每个分支对应的不同属性值。

分支的类就是原始数据(训练数据)在这个分支上出现最多的类。

 

每一个属性都会产生一个不同的规则集,每条规则对应这个属性的每个值。对每个属性值的规则集的误差率进行评估,选择效果最好的一个即可。

伪代码表述:

对于每个属性

  对于这个属性的每个属性值,建立如下规则

    计算每个类别出现的频率

    找出出现最频繁的类别

    建立规则,将这个类别赋予这个属性值

  计算规则的误差率

选择误差率最小的规则

 

一个简单的例子,数据使用weka自带的weather数据集。

weka4_1

针对每个属性,一共有5个,其中最后一个是我们希望输出的结果,所以只有4个属性值。即outlook、temperature、humidity、windy。

我们先计算outlook属性,它有3个属性值,sunny、rainy、overcast。

weka4_2

针对属性值sunny而言,一共有5条数据。

weka4_3

其中对应play为no的有3条、对应play为yes的有2条,为no的最频繁,所以给sunny赋值为no。

同理对于rainy而言,有5条记录。

weka4_4

其中对应play为yes的有3条、对应play为no的有2条,为yes的最频繁,所以给rainy赋值为yes。

同理计算overcast属性值,赋值为yes。

 

然后计算误差率

sunny—>no 中有3个分类正确,2个分类错误,误差0.4

rainy—>yes 误差为0.4

overcast—>yes 误差为0

outlook总误差4/14

 

然后依次计算temperature、humidity、windy属性,并计算误差和总误差。然后选择误差最小的(相同则随意取或者取稳定度高的)。

最后结果为

sunny—>no

rainy—>yes

overcast—>yes

 

使用Weka实现OneR算法

weka自身已经实现了OneR算法,位于weka.classifiers.rules包中。

OneR可以传入一个参数,如果是一个连续值,而且你希望离散化它们的话可以指定一个桶大小。

Instances instances = DataSource.read("data/weather.arff"); 
instances.setClassIndex(instances.numAttributes() - 1); 
System.out.println(instances.toSummaryString());

OneR oneR = new OneR(); 
oneR.setDebug(false); 
oneR.setMinBucketSize(6); 
oneR.buildClassifier(instances); 
System.out.println(oneR.toString()); 

效果:

weka4_5

如果将桶大小设为1,结果将会有很大不同。

weka4_6

很明显前一个结果的用处要大很多。

相关参考

关于OneR的相关,最好的参考自然是1993年R.C. Holte所著相关文章Very simple classification rules perform well on most commonly used datasets,页码是63-91页。

附上下载地址:http://www.ctdisk.com/file/6000694

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值