# 1. 데이터를 불러옵니다. wine <- read.csv('c:\\data\\wine2.csv',stringsAsFactors = T)
# 2. 데이터를 살펴봅니다. colSums(is.na(wine))
# 3. 훈련데이터와 테스트 데이터를 분리합니다. set.seed(1) train_num <- createDataPartition(wine$Type, p = 0.8, list = F)
train_data <- wine[ train_num , ] test_data <- wine[ - train_num , ]
nrow(train_data) #143 nrow(test_data) #34
# 4. 모델 생성합니다 wine_model <- C5.0(train_data[ , -1], train_data[ , 1])
# 5. 모델 예측 train_result <- predict(wine_model, train_data[ , -1]) test_result <- predict(wine_model, test_data[ , -1])
# 6. 모델 예측 평가 sum(train_result == train_data[ , 1] ) / 143 * 100 # 99% sum(test_result == test_data [ , 1] ) / 34 * 100 # 94%
# 7. 모델 성능 개선
y <- 1 jumpby <- 1
options(scipen=999)
# 루프문 확인 for ( i in 1:10 ) { credit_model <- C5.0(train_data[ ,-17],train_data[ ,17], trials=y) test_result2 <- predict(credit_model, test_data[ ,-17]) a <- sum(test_result2 == test_data[ ,17])/100 *100 y <- y + jumpby print(paste(i,'일때',a)) }
>> [1] "1 일때 94.1176470588235" [1] "2 일때 94.1176470588235" [1] "3 일때 97.0588235294118" [1] "4 일때 100" [1] "5 일때 94.1176470588235" [1] "6 일때 97.0588235294118" [1] "7 일때 97.0588235294118" [1] "8 일때 97.0588235294118" [1] "9 일때 97.0588235294118" [1] "10 일때 97.0588235294118"
# 8. 성능 개선 재확인
# 모델2 생성 trials = 4 값 설정 wine_model2 <- C5.0(train_data[ , -1], train_data[ , 1], trials = 4)
train_result2 <- predict(wine_model2, train_data[ , -1]) test_result2 <- predict(wine_model2, test_data[ , -1])
sum(train_result2 == train_data[ , 1] ) / 143 * 100 # 100% sum(test_result2 == test_data [ , 1] ) / 34 * 100 # 100% |