# 1. 데이터 불러오기
data <- read.csv('c://data//wine2.csv', stringsAsFactors = TRUE)
head(data)
# 2. 데이터 살펴보기
str(data)
data
# 결측치 확인
colSums( is.na(data) )
# 3. 훈련 데이터와 테스트 데이터 분류
library(caret)
set.seed(1)
# 훈련 데이터
train_num <- createDataPartition( data$Type, p=0.8, list=F)
length(train_num) #143
train_data <- data[train_num, ]
nrow(train_data)
# 테스트 데이터
test_data <- data[-train_num, ]
nrow(test_data) #34
# 4. 의사결정트리 모델 생성
library(C50)
model <- C5.0( train_data[ , -1], train_data[ , 1])
model
summary(model)
# 시각화
plot(model)
# 5.훈련 데이터 예측 99.3007%
train_result <- predict(model, train_data[ , -1])
train_result
sum (train_result == train_data[, 1]) / 143 * 100
# 6. 모델 성능 확인하기
# 테스트 데이터 예측 정확도 94.11765%
test_result <- predict( model, test_data[ , -1])
test_result
sum ( test_result == test_data[ , 1]) / 34 * 100
# 7. 모델 성능 높이기
model2 <- C5.0( train_data[ , -1], train_data[ , 1], trials = 5)
# 개선된 모델 훈련 데이터 예측 정확도 100%
train_result2 <- predict(model2, train_data[ , -1])
train_result2
sum (train_result2 == train_data[, 1]) / 143 * 100
# 개선된 모델 테스트 데이터 에측 정확도 97.05882%
test_result2 <- predict( model2, test_data[ , -1])
test_result2
sum ( test_result2 == test_data[ , 1]) / 34 * 100
# 8. 모델 개선
y <- 1
jumpby <-1
options(scipen=999)
for ( i in 1:50 ) {
model<-C5.0(train_data[ ,-1],train_data[ ,1], trials=y)
test_result2 <- predict(model, test_data[ ,-1])
a<- sum(test_result2 == test_data[ ,1])/34 *100
y <- y + jumpby
print(paste(i,'일때',a))
}
# [1] "4 일때 100"
# FN
library(gmodels)
model2 <- C5.0( train_data[ , -1], train_data[ , 1], trials=4 )
test_result2 <- predict( model2, test_data[ , -1] )
x <- CrossTable( test_data[ , 1], test_result2 )
x$t