R에서는 nnet:multinom()을 사용해 다항 로지스틱 회귀 모델을 작성할 수 있다.
library(nnet)
model <- nnet::multinom(Species ~. , data=iris)
head(fitted(model)) # 적합 확인
> head(fitted(model)) # 적합 확인
setosa versicolor virginica
1 1.0000000 1.526406e-09 2.716417e-36
2 0.9999996 3.536476e-07 2.883729e-32
3 1.0000000 4.443506e-08 6.103424e-34
4 0.9999968 3.163905e-06 7.117010e-31
5 1.0000000 1.102983e-09 1.289946e-36
6 1.0000000 3.521573e-10 1.344907e-35
교차검증을 통해 해당 분석방법의 적합성을 판단해볼 수 있다.
# 5-fold cross validation
group.1 <- cut(seq(1,50), breaks=5, labels=F)
group.2 <- cut(seq(51,100), breaks=5, labels=F)
group.3 <- cut(seq(101,150), breaks=5, labels=F)
fold <- c(group.1, group.2, group.3)
acc <- c() # accuracy for each fold
for (i in 1:5) {
ds.tr <-iris[fold != i, ]
ds.ts <-iris[fold == i, ]
m <- multinom(Species ~. , data=ds.tr)
pred <- predict(m, newdata=ds.ts[,1:4])
acc[i] <- mean(pred==ds.ts[,5]) # 예측 정확도
}
acc
mean(acc)
> acc
[1] 1.0000000 1.0000000 0.9333333 0.9333333 1.0000000
> mean(acc)
[1] 0.9733333
참고 :
[1]: https://m.blog.naver.com/htk1019/221016607168 "R로하는 기계학습 실습 1편 : 로지스틱 회귀"
[2]: https://datascienceschool.net/view-notebook/07f92f2b2719461197260d7468f37084/ "교차 검증"
'Bite Bits > R' 카테고리의 다른 글
바이올린 그림 vs 박스그림 (0) | 2019.12.21 |
---|---|
AIC, BIC (0) | 2019.12.21 |
How to download YouTube data in R (0) | 2019.11.08 |
R 기본 연산자 정리 (0) | 2019.11.06 |
[R] R 에서 excel 파일 읽어오기 (0) | 2018.02.07 |