#회귀트리 모델
#1. 데이터 로드
con <- read.csv("concrete.csv", header=T)
#2. 데이터 살펴보기
hist(con$strength)
colSums(is.na(con))
str(con)
nrow(con)
#3. 테스트와 훈련 데이터 구분
library(caret)
train_num <- createDataPartition(con$strength, p=0.9, list=F)
train_data <- con[train_num, ]
test_data <- con[-train_num, ]
nrow(train_data)
nrow(test_data)
#4. 모델 형성
model <- rpart(strength ~ . , data=train_data)
model
#5. 그래프 그리기
rpart.plot(model, digits=3)
#5. 테스트데이터 예측
result <- predict(model, test_data[ , -9])
#6. 테스트 결과 분석
cor(result, test_data[ , 9])
mae <- function(actual, predicted) {mean ( abs( actual - predicted) ) }
mae ( test_data[ , 9], result )
#모델 트리 모델
#1. 데이터 로드
con <- read.csv("concrete.csv", header=T)
#2. 데이터 살펴보기
hist(con$strength)
colSums(is.na(con))
str(con)
nrow(con)
#3. 테스트와 훈련 데이터 구분
library(caret)
train_num <- createDataPartition(con$strength, p=0.9, list=F)
train_data <- con[train_num, ]
test_data <- con[-train_num, ]
nrow(train_data)
nrow(test_data)
#4. 모델 형성
#install.packages("Cubist")
library(Cubist)
model <- cubist(x=train_data[ , -9], y=train_data[ , 9])
model
summary(model)
#5. 테스트 데이터 예측
result <- predict(model, test_data[ , -9])
result
#6. 테스트 결과 분석
cor(result, test_data[ , 9])
mae <- function(actual, predicted) {mean ( abs( actual - predicted) ) }
mae ( test_data[ , 9], result )
#랜덤 포레스트 모델
#1. 데이터 로드
con <- read.csv("concrete.csv", header=T)
#2. 데이터 살펴보기
hist(con$strength)
colSums(is.na(con))
str(con)
nrow(con)
#3. 테스트와 훈련 데이터 구분
library(caret)
train_num <- createDataPartition(con$strength, p=0.9, list=F)
train_data <- con[train_num, ]
test_data <- con[-train_num, ]
nrow(train_data)
nrow(test_data)
#4. 모델 형성
library(randomForest)
set.seed(1)
model <- randomForest(strength ~ . , data=train_data, ntree=1000, mtry=3)
model
#5. 테스트 데이터 예측
result <- predict(model, test_data[ , -9])
#6. 테스트 결과 분석
cor(result, test_data[ , 9])
mae <- function(actual, predicted) {mean ( abs( actual - predicted) ) }
mae ( test_data[ , 9], result)