R - neuralnet 예제





오늘 예제는 iris 데이터를 활용하여 neuralnet을 사용해보는 예제입니다.


코드

# neuralnet : iris dataset : 입력값을 정규화하지 않고 결과 출력
library(neuralnet)
iris

set.seed(1)
train<-sample(1:nrow(iris),nrow(iris)*0.7)
test <- seq(nrow(iris))[-train]
iristrain <-iris[train, ]
iristest <-iris[test, ]
dim(iristrain); dim(iristest)


#꽃의 종류를 범주형으로 하기 위해 양면화(T,F)
iristrain <- cbind(iristrain, iristrain$Species=='setosa') #칼럼 3개 추가
iristrain <- cbind(iristrain, iristrain$Species=='versicolor')
iristrain <- cbind(iristrain, iristrain$Species=='virginica')
names(iristrain)[6:8] <-c('setosa','virginica','versicolor')
head(iristrain, 3)

#nn model
nn <- neuralnet(setosa + virginica + versicolor ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iristrain,hidden = 3)
plot(nn)

#예측
iristest #칼럼을 추가하지 않음
comp <- compute(nn, iristest[-5])
names(comp)
pred.weight <-comp$net.result
pred.weight
idx <- apply(pred.weight, 1, which.max) #which.max 가장 큰 값
idx

#c('setosa','virginica','versicolor')[3] #1. seto 2. virg 3. vers
pred <-c('setosa','virginica','versicolor')[idx] # 숫자값으로 안보이고 꽃의 종류로 보이게 하기
pred
table(pred,iristest$Species)
(15+0+3)/nrow(iristest)




샘플 데이터





본 포스팅은 KIC 캠퍼스에서 박영권 강사의 지도하에 공부하며 작성한 리포트입니다.
혹시 잘못된 내용이 있거나 문제 소지시 댓글 남겨주시면 조치하겠습니다.





댓글(0)

Designed by JB FACTORY