단순베이즈 분류기는 예측변수가 범주형이 아니라 연속형인 경우에도 사용할 수 있다. (책의 이전 버전에서는 이에 대한 설명이 부족하였기에 새 버전에 간단한 설명을 추가해 넣었다.) 다음은 유명한 데이터 집합인 iris
를 단순베이즈 분류기를 써서 분석하는 예이다.
library(e1071)
data(iris)
str(iris)
'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
반응변수는 Species
이다. 이 변수는 setosa, versicolor, virginica 중 하나를 값으로 취한다. 따라서 혼동행렬은 크기가 3x3 이 된다.
nBayes.fit = # 여기 코드를 넣는다.
# 이 쎌에 코드를 넣는다.
nb.pred setosa versicolor virginica setosa 50 0 0 versicolor 0 47 3 virginica 0 3 47
error rate = 0.040
이번에는 데이터 중 일부를 트레이닝 집합으로 사용하고 나머지는 테스트 집합으로 사용해 보자.
n = nrow(iris)
set.seed(33)
train.idx = sample(n, 100)
all = 1:n
test.idx = all[-train.idx]
# 이 쎌에 코드를 넣는다.
nb.pred setosa versicolor virginica setosa 17 0 0 versicolor 0 16 2 virginica 0 1 14
error rate = 0.060