0

我对 R 很陌生,并且试图分析这个示例数据集以开始使用朴素贝叶斯分类。

Day     Outlook  Temperature    Humidity    Wind    Play
1       Sunny    Hot            High        Weak    No  
2       Sunny    Hot            High        Strong  No  
3       Overcast Hot            High        Weak    Yes  
4       Rain     Mild           High        Weak    Yes  
5       Rain     Cool           Normal      Weak    Yes  
6       Rain     Cool           Normal      Strong  No  
7       Overcast Cool           Normal      Strong  Yes  
8       Sunny    Mild           High        Weak    No  
9       Sunny    Cool           Normal      Weak    Yes  
10      Rain     Mild           Normal      Weak    Yes  
11      Sunny    Mild           Normal      Strong  Yes  
12      Overcast Mild           High        Strong  Yes  
13      Overcast Hot            Normal      Weak    Yes  
14      Rain     Mild           High        Strong  No  

我已经能够使用该table()函数来获取类别变量(如 Outlook、温度、湿度、风和播放)的每个值的出现次数。现在要进入下一阶段,我需要计算特定目标类值 Yes 和 No 的每个分类变量值的相应出现次数。例如,要知道 X(outlook=Sunny,play=否)对于上述数据集,它是 2,我应该使用什么命令来获得所需的结果?

注意:我知道朴素贝叶斯计算概率,但我更感兴趣的是在这种情况下获得频率。

4

2 回答 2

2

您是否正在寻找这个:

by(DF[-1], DF$Play, sapply, table)

? (假设DF是您的数据框。)

结果:

DF$Play: No
$Outlook

Overcast     Rain    Sunny 
       0        2        3 

$Temperature

Cool  Hot Mild 
   1    2    2 

$Humidity

  High Normal 
     4      1 

$Wind

Strong   Weak 
     3      2 

$Play

 No Yes 
  5   0 

----------------------------------------------------------------------------------------------------------------------------- 
DF$Play: Yes
$Outlook

Overcast     Rain    Sunny 
       4        3        2 

$Temperature

Cool  Hot Mild 
   3    2    4 

$Humidity

  High Normal 
     3      6 

$Wind

Strong   Weak 
     3      6 

$Play

 No Yes 
  0   9 
于 2013-09-24T16:53:25.543 回答
2

通过向 传递多个参数table(),您可以获得意外情况。例如,如果我们有这个数据框:

    outlook play
1      rain   no
2  overcast   no
3       sun   no
4      rain  yes
5      rain   no
6      rain  yes
7  overcast   no
8      rain  yes
9  overcast  yes
10     rain  yes

然后:

> table(df$outlook)

overcast     rain      sun 
       3        6        1 
> table(df$outlook,df$play)

           no yes
  overcast  2   1
  rain      2   4
  sun       1   0
于 2013-09-24T17:01:11.783 回答