#1. 데이터 불러오기
iris <- read.csv("c:\\data\\iris2.csv", stringAsFactors=T)
head(iris)
unique(iris$Species) #종속변수 : Species
#2. 결측치 확인하기
colSums(is.na(iris))
#3. 정규화하기
normalize <- function(x) {
return (( x-min(x)) / (max(x) - min(x) ))
}
str(iris)
iris_n <- as.data.frame( lapply( iris[ ,-5], normalize))
summary(iris_n)
iris2 <- cbind( Species=iris$Species, iris_n)
head(iris2)
#4. 훈련과 테스트 분리하기
library(caret)
set.seed(5)
k <- createDataPartition(iris2$Species, p=0.9, list=F)
train_data <- iris2[ k, ]
test_data <- iris2[ -k, ]
nrow(train_data) #135
nrow(test_data) #15
#5. 모델 훈련
install.packages("nnet")
library(nnet)
set.seed(5) #가중치 초기값을 어느자리에서든 똑같이 하기 위해서 설정
model <- nnet(Species ~ ., data=train_data, size=2) # 은닉층 1개에 뉴런수 2개(size=2)
#6. 모델 예측
result <- predict( model, test_data[ , -1], type="class")
# Species="class" 로 하면 종속변수를 출력하고
# Species="raw" 로 하면 확률을 볼 수 있음
result
#7. 모델 평가
sum( result == test_data[ ,1]) / length( test_data[ ,1]) # 정확도 100%
# 만약 정확도를 올려야 한다면?
#8. 모델 성능 높이기
model2 <- nnet(Species ~ ., data=train_data, size=5)
result2 <- predict( model2, test_data[ , -1], type="class")
result2
#7. 모델 평가
sum( result2 == test_data[ ,1]) / length( test_data[ ,1]) # 정확도 100%