我使用了 FSelecter 包的 OneR 算法来找到错误率最低的属性。我的班级属性是是和否。我的属性特征也是yes和no。
OneR 算法的结果是:
Ranking-No. 1
Atribut-Name: OR1:
Matrix: ------ 0(Attribut-Characteristic) -- 1 (Attribut Characteristics
0(Class):-------------------25243-------------------0
1(Class: -------------------1459-------------------18
Error-Rate: 1459 (0 + 1459)
Ranking-No. 2
Atribut-Name: OR2:
Matrix: ------ 0(Attribut-Characteristic) -- 1 (Attribut Characteristics
0(Class):-------------------25243-------------------0
1(Class: -------------------1460-------------------17
Error-Rate: 1460 (0 + 1460)
但是,如果我在同一数据帧上使用相关函数,则最佳属性的错误率低于使用 oneR 函数获得的属性。
Atribut-Name: CO4:
Matrix: ------ 0(Attribut-Characteristic) -- 1 (Attribut Characteristics
0(Class):-------------------25204-------------------39
1(Class: -------------------1348-------------------129
Error-Rate: 1387 (39 + 1348)
谁能告诉我,为什么 OneR 算法没有将 CO4 属性显示为最佳属性(基于错误率)?
OneR 算法使用哪些标准?
---除了更好地理解我的问题---
完整的数据太大而无法显示。我新建了一个数据池,效果一样
延迟 - OR1 - CO4 ..
1 ---------1--------1--
0 ---------0--------0--
0 ---------0--------1--
1 ---------0--------1--
0 ---------0--------0--
1 ---------0--------1--
0 ---------0--------0--
1 ---------0--------1--
显示单个属性的错误率的代码:
打印(表(datapool_stackoverflow$DELAYED,datapool_stackoverflow$OR1))
OneR函数的代码:
库(FSelector)
oneR_stackoverflow <- oneR(延迟~., datapool_stackoverflow)
subset_stackoverflow <- cutoff.k(oneR_stackoverflow, 2)
打印(子集堆栈溢出)
相关代码:
cor(as.numeric(datapool_stackoverflow$DELAYED),as.numeric(datapool_stackoverflow$OR1))
在这种情况下,结果是:
错误率:OR1 矩阵:------ 0(属性特征)-- 1(属性特征
0(类):----------4------------------------ --0
1(班级:---------------------3------------ -1
曼努埃尔计算的错误率:3(0 + 3)
错误率:CO4 矩阵:------ 0(属性-特征)-- 1(属性特征)
0(类):----------3---------- --1
1(等级:------------------------0---------- -4
错误率:1(1 + 0)
相关性:属性 OR1:0.377 属性 CO4:0.77
OneR:“OR1”、“CO4”
为什么,OneR 函数提供 OR1 属性作为分类的最佳属性?