Java Weka计算属性的不同值的出现次数

时间:2018-04-01 10:58:24

标签: java machine-learning attributes weka

我有一个属性(使用Weka!)

@attribute age {10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89,90-99}

现在,对于给定的Instances data,我想获得属性Instance中每个age的出现次数。因此,如果在data我有50个具有属性age 10-19的实例,100个具有属性age 20-29的人和150个具有属性age 30-39的人,那么我想要计算它,得到类似的东西:

age 10-19: 50
age 20-29: 100
age 30-39: 150
age 40-49: 0
age 50-59:0
...
age 90-99: 0

我的第一个猜测就是采用一些天真的方法来计算每个人使用哈希映射或类似的东西,但我认为有一个更好的解决方案。 任何帮助将不胜感激(即使是天真的方法)。 谢谢!

1 个答案:

答案 0 :(得分:0)

找到一个解决方案。

将属性作为索引Relative Self,循环遍历数据集,并为属性DataContext的{​​{1}}查找Page的属性值索引。

select  -- count only Online rows
        online_count = sum(case when onlineoffline = 'Online' then 1 else 0 end),
        -- count all rows
        all_count = count(*)
from    tbl
where   trxdate >   
        -- find the first trxdate that is online
        (select top 1 trxdate from tbl where onlineoffline = 'Online' order by trxdate)