2013-09-24 12 views
0

我對R很新,並試圖分析此示例數據集以開始樸素貝葉斯分類。如何獲得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,溫度,溼度,風和播放的分類變量的數量。現在進入下一階段,我需要計算特定目標分類值「是」和「否」的分類變量的每個值的相應出現次數。例如,要知道X的出現次數(outlook = Sunny,play =否)對於上面的數據集,這是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 
+0

嗨,哥們完美的作品感謝一噸。 –

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 
+0

有趣的使用'表'。嘗試使用這個:'sapply(df [-1],table,df $ Play)'在一次調用中獲得所有意外事件。 –

+0

智能和精確。效果很好。感謝您的幫助延長。 –