## 마지막 문제
# 1. 데이터 불러오기
wine <- read.csv("wine2.csv", stringsAsFactors = TRUE, fileEncoding = 'EUc-KR')
head(wine) #14개
# 2. 데이터 살펴보기
str(wine)
summary(wine$Type)
#결측치 확인
colSums(is.na(wine))
# 3. 훈련 데이터/테스트 데이터 분리하기
library(caret)
set.seed(1)
train_num <- createDataPartition(wine$Type, p=0.9, list=F)
train_data <- wine[train_num, ]
test_data <- wine[-train_num, ]
nrow(train_data) #161
nrow(test_data) #16
#4. 모델 생성
library(C50)
model <- C5.0( train_data[ , -1], train_data[ , 1], trials = 5 )
#5. 모델 확인
summary(model)
#6. 모델 예측
#오버피팅이 됐는지 알기 위해 두개를 같이 파악
train_result <- predict(model, train_data[ , -1] )
test_result <- predict(model, test_data[ , -1] )
#7. 모델 평가
#훈련 정확도
sum(train_result == train_data[, 1]) / 161 * 100
#테스트 정확도
sum(test_result == test_data[, 1]) / 16 * 100
#이다음 for문으로 생성
y <- 1
jumpby <- 1
options(scipen=999)
for ( i in 1:20 ) {
model<-C5.0(train_data[ ,-1], train_data[ ,1], trials=y)
test_result2 <- predict(model, test_data[ ,-1])
a<- sum(test_result == test_data[ ,1])/16 *100
y <- y + jumpby
print(paste(i,'일때',a)) }