본문 바로가기
IT이야기/R 언어

R언어 - 성과분석

by 행복찾아3만리 2021. 8. 21.
반응형

이번 글에서는 모든 데이터 분석의 마지막으로 필요한 성과분석에 대해 정리해보았습니다.

setwd("D:/ADP/실기준비")
data<-read.csv("titanic.csv")
str(data)
data$Sex<-as.factor(data$Sex)
data$Embarked<-as.factor(data$Embarked)
data$Pclass<-as.factor(data$Pclass  )
data$Mother<-as.factor(data$Mother  )
data$Survived<-as.factor(data$Survived  )

set.seed(1)
#데이터 분리
idx<-sample(3, nrow(data), replace=T, prob=c(0.5,0.3,0.2))#replace 복원 추출
train<-data[idx==1,]
validation<-data[idx==2,]
test<-data[idx==3,]

#목적변수를 고려한 데이터분리, 분리한 데이터는 목적변수 값의 비율이 원본 데이터와 같게 유지 된다.
#install.packages("caret")
library(caret)
part<-createDataPartition(data$Survived, times = 1, p=0.7)#Survived 비율
parts<-as.vector(part$Resample1)
train<-data[parts,]
test<-data[-parts,]
nrow(train)
nrow(test)
str(test)
#성과분석
library(caret)
model<-glm(Survived~Pclass+Sex+Age+Fare+Embarked+Family, data=train, family = 'binomial')
summary(model)
pred<-predict(model,test[-1],type='response')#type을 response로 지정하여 확률값을 출력
pred1<-as.data.frame(pred)
pred1$Survived<-ifelse(pred1$pred>0.5,pred1$Survived<-1,pred1$Survived<-0)
confusionMatrix(data=as.factor(pred1$Survived), reference = as.factor(test$Survived), positive = '1') # '1'로 해야함

#ROC커브 AUC
#install.packages('ROCR')
library(ROCR)
roc<-prediction(as.numeric(pred1$Survived), as.numeric(test$Survived))
plot(performance(roc,'tpr','fpr'))
abline(a=0, b=1, lty=2, col='red')

performance(roc,'auc')@y.values # auc값

#다중 분류
idx<-sample(1:nrow(iris), nrow(iris)*0.7,replace=FALSE)
train<-iris[idx,]
test<-iris[-idx,]

#install.packages('nnet')
library(nnet)
model<-multinom(Species~.,train)
pred<-predict(model, test[-5])#[1] setosa     setosa     setosa     setosa     versicolor versicolor versicolor
confusionMatrix(pred, test[,5])

 

여기까지 R언어를 활용한 성과분석에 대해 정리해보았습니다.

 

반응형

댓글