`
yangliuy
  • 浏览: 65936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据挖掘—概念学习Candidate-Elimination算法的C++实现

 
阅读更多

Candidate-Elimination算法是数据挖掘中的一种概念学习算法,部分解决Find-S的不足,可以输出所有与训练样本一致的概念,同时利用概念间偏序关系来指导搜索,其伪代码描述如下


花了几个小时的时间总算把这个算法用C++实现测试通过了,采用了STL中的二维Vector容器保存字符串,在调试部分浪费不少时间。主要是用VC++ 6.0查看STL容器中的变量值不太方便,比如Vector,需要在调式窗口里输入s._first,10 才可以看到全部的数据;也可以加输出的测试代码,但是比较麻烦。好了,废话不多说了,贴上代码,希望各位批评指正。

【概念挖掘需求】


基本的算法思想是,泛化边界初始化为全?,特化边界特化为全空集(@),

1、若遇到正实例,首先从G中删除不包含该实例的概念,然后对S删除与实例不相符的概念,同时做最小泛化,使其包含该实例

2、若遇到负实例,首先从S中删除包含了该实例的概念,然后对G删除包含了该实例的概念,同时做最小特化,注意最小特化集是与当前S一一枚举出可能的特化概念,删除那些符合该实例的概念

C++源码


测试数据一


测试结果一


测试数据二

测试结果二

具体预测的方法是

1、如果给定的实例符合概念集合S,则一定去游泳

2、如果给定的实例不符合概念集合G,则一定不去游泳

3、如果给定的实例不符合概念集合S,但是符合概念集合G,则可能去游泳





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics