Kaggel + Titanic analysis
with Data Science
R 설치부터 Random forest까지
NEXT 16년 3학기 : Data visualization
김명찬
타이타닉 예제
• http://trevorstephens.com/kaggle-titanic-
tutorial/getting-started-with-r/
• R 사용법 부터 random forest 사용법까지
상세하게 단계별로 설명함.
오늘의 과정
1. Kaggle 제출 예제
– 전부 죽이기
2. Manually fitted model
– 수동으로 노가다
3. Deicision tree
4. Feature Engineering
5. Random Forest
Kaggle
• 머신러닝 문제 풀이 온라인 플랫폼
• 포럼
• 예제
• 등등 좋은 정보가 엄청 많음.
– 단, 영어.
오늘의 문제 : 타이타닉
• Titanic : Machine Learning from Disaster
• https://www.kaggle.com/c/titanic/
• Home -> Data 에서 데이터 다운로드 가능
• Home -> Make a submission 으로 제출 가능
일단 자료를 볼까요
• 다운로드
• train.csv
• test.csv
• test파일에는 한 컬럼이 없음.
• 걔를 답으로 맞춰서 제출 하는 것!
Train.csv
파일 읽기
• table , summary 로 대충 보기 ( EDA??? )
– 모든 단계에서 버릇처럼 해보셔요
• 62% 가 돌아가셨네…
 train <- read.csv("train.csv", stringsAsFactors=FALSE)
 table(train$Survived)
 prop.table(table(train$Survived))
1. 예측을 해보자
• 타이타닉은 엄청난 재난이었군.
• 그럼 일단 탔으면 죽은걸로.
• 제출해보자
 test$Survived <- rep(0, 418)
 submit <- data.frame(PassengerId = test$PassengerId, Survived =
test$Survived)
 write.csv(submit, file = "theyallperish.csv”, row.names = FALSE)
Home -> Make a submission 으로 제출 가능
오우
• 이제 어디가서 모르는 사람에게 사기를 칠
수 있습니다.
• 당신은 세계랭킹 6000등.
2. 수동으로 특징 찾기
• Lady first? 정말일까?
• 정말이네…
 summary(train$Sex)
 prop.table(table(train$Sex, train$Survived))
 prop.table(table(train$Sex, train$Survived), 1)
2. 수동으로 특징찾기 : 제출
• 위 과정과 동일
 test$Survived <- 0
 test$Survived[test$Sex == 'female'] <- 1
 submit <- data.frame(PassengerId = test$PassengerId, Survived =
test$Survived)
 write.csv(submit, file = ”femaleSurvied.csv”, row.names = FALSE)
오우 예쓰!
2. 수동으로 특징찾기
• 나이는 어떨까?
 summary(train$Age)
 train$Child <- 0
 train$Child[train$Age < 18] <- 1
3. Decision tree
• Greedy 한 decision tree 생성기
fit <- rpart(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data=train,
method="class")
3. Decision tree
4. Featuring Engineering
• 이미 있는 변수들 말고, 내가 직접 의미있는
변수를 만들어 내 보자.
• 이름을 분석하면 뭔가 나오지 않을까?
4. Featuring Engineering
• 먼저 , 이름을 보면 Sir, Ms 등 귀족 여부를 알
수 있다.
• 이름을 쪼개서 신분을 알아내자!
4. Featuring Engineering
• 두 테이블을 합친다.
– 새로운 Feature를 만들어야 하기 때문에
– 한 테이블에서 작업해야 Factor가 같이 생성됨
> test$Survived <- NA
> combi <- rbind(train, test)
4. Featuring Engineering
• 어떻게 추출해야 하나?
• 한 항에 대해서 연습해보자.
> combi$Name <- as.character(combi$Name)
> combi$Name[1]
[1] "Braund, Mr. Owen Harris”
> strsplit(combi$Name[1], split='[,.]')
[[1]]
[1] "Braund" " Mr" " Owen Harris“
> strsplit(combi$Name[1], split='[,.]')[[1]]
[1] "Braund" " Mr" " Owen Harris“
> strsplit(combi$Name[1], split='[,.]')[[1]][2]
[1] " Mr"
4. Featuring Engineering
• 전체 테이블에 적용해 새로운 Feature 생성
 combi$Title <- sapply(combi$Name, FUN=function(x) {strsplit(x,
split='[,.]')[[1]][2]})
 combi$Title <- sub(' ', '', combi$Title)
 table(combi$Title)
Capt Col Don Dona Dr Jonkheer Lady
1 4 1 1 8 1 1
Major Master Miss Mlle Mme Mr Mrs
2 61 260 2 1 757 197
Ms Rev Sir the Countess
2 8 1 1
4. Featuring Engineering
• Factor들을 세세히 살펴보고 의미가
같은것을 묶음.
 combi$Title[combi$Title %in% c('Mme', 'Mlle')] <- 'Mlle’
 combi$Title[combi$Title %in% c('Capt', 'Don', 'Major', 'Sir')] <- 'Sir’
 combi$Title[combi$Title %in% c('Dona', 'Lady', 'the Countess', 'Jonkheer')] <-
'Lady’
 combi$Title <- factor(combi$Title)
4. Featuring Engineering
• 한 가족은 아마도 공동운명체가 아닐까?
– 같이 살거나 같이 죽거나…
• 이름으로 같은 가족이었던 사람들을
알아내보자!
– 성씨 같은걸로 알아내면 되겠지.
– 흔한 성씨는 어떻게 처리할지 고민해보자
4. Featuring Engineering
• 먼저… 대가족이 오히려 살기 어려웠을 수
있으니
• 가족 수를 먼저 구해본다.
• 형제+배우자+부모+자식+본인
 combi$FamilySize <- combi$SibSp + combi$Parch + 1
4. Featuring Engineering
• Family name 찾아내 factor화 해보자
• 잘 보면 숫자가 맞지 않음… 3명이 있어야 하는
가족이 1명밖에 없는것 보이나요?
 combi$Surname <- sapply(combi$Name, FUN=function(x) {strsplit(x,
split='[,.]')[[1]][1]})
 combi$FamilyID <- paste(as.character(combi$FamilySize), combi$Surname, sep="")
 combi$FamilyID[combi$FamilySize <= 2] <- 'Small’
 table(combi$FamilyID)
11Sage 3Abbott 3Appleton 3Beckwith 3Boulos
11 3 1 2 3
3Bourke 3Brown 3Caldwell 3Christy 3Collyer
3 4 3 2 3
3Compton 3Cornell 3Coutts 3Crosby 3Danbom
3 1 3 3 3
. . .
4. Featuring Engineering
• 1, 2명 있는 개인플레이 분들을 모아서
분리하는 과정에서 오류가 생긴듯..
• 가족수가 잘 안맞는 분들도 있다.
• 다른 접근 방법
4. Featuring Engineering
• 성씨만 뽑아내서 따로 data frame으로
만들자
 famIDs <- data.frame(table(combi$FamilyID))
4. Featuring Engineering
• 여기서 2명 이하인 성씨를 삭제
• 원래 자료에서 famIDs에 속하는 성과 안
속하는 성으로 나눈다.
 famIDs <- famIDs[famIDs$Freq <= 2,]
 combi$FamilyID[combi$FamilyID %in% famIDs$Var1] <- 'Small’
 combi$FamilyID <- factor(combi$FamilyID)
4. Featuring Engineering
• 다시 train, test 분리후
• 디시전 트리 생성
 train <- combi[1:891,]
 test <- combi[892:1309,]
 fit <- rpart(
Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked + Title
+ FamilySize + FamilyID,
data=train,
method="class")
4. Featuring Engineering
• 성별보다 정확한 Ms, Mr, Sir 등등
4. Featuring Engineering
쫘잔
5. Random Forest
• Random Forest란?
• 먼저 ensemble이란?
– 여러개의 Learning model을 가지고 조합함.
5. Random Forest
• Random Forest
– 랜덤하게 추출된 샘플로
– 여러개의 Decision tree를 만들어
– 각 tree들의 predict를 조합하여 최종 predict를
생성.
5. Random Forest
• Random Forest는 빈값이 없어야함…
• 나이에서 빈값 찾아 채우기
 Agefit <- rpart(Age ~ Pclass + Sex + SibSp + Parch + Fare + Embarked
+ Title + FamilySize,
data=combi[!is.na(combi$Age),], method="anova")
 combi$Age[is.na(combi$Age)] <- predict(Agefit, combi[is.na(combi$Age),])
5. Random Forest
• 또 빈 값 없나 찾아보자
• 채우자
– 의미를 생각해서 말이 되는 값으로 채워야 함!
> summary(combi)
> summary(combi$Embarked)
C Q S
2 270 123 914
> which(combi$Embarked == '')
[1] 62 830
> combi$Embarked[c(62,830)] = "S"
> combi$Embarked <- factor(combi$Embarked)
5. Random Forest
• 얘도 채우자…
> summary(combi$Fare)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.000 7.896 14.450 33.300 31.280 512.300 1
> which(is.na(combi$Fare))
[1] 1044
> combi$Fare[1044] <- median(combi$Fare, na.rm=TRUE)
5. Random Forest
• FamilyID도 factor화 해서 정리하고
> combi$FamilyID2 <- combi$FamilyID
> combi$FamilyID2 <- as.character(combi$FamilyID2)
> combi$FamilyID2[combi$FamilySize <= 3] <- 'Small'
> combi$FamilyID2 <- factor(combi$FamilyID2)
5. Random Forest
• Random Forest 라이브러리 설치 후 실행!!
> install.packages('randomForest')
> library(randomForest)
> set.seed(415)
> fit <- randomForest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp
+ Parch + Fare + Embarked + Title + FamilySize + FamilyID2,
data=train,
importance=TRUE,
ntree=2000)
5. Random Forest
• Feature별 중요도를 확인해보자
> varImpPlot(fit)
5. Random Forest
• 예측 실행! 얍… 엉?
• 더 떨어짐
> Prediction <- predict(fit, test)
> submit <- data.frame(PassengerId = test$PassengerId, Survived =
Prediction)
> write.csv(submit, file = "firstforest.csv", row.names = FALSE)
5. Random Forest
• Random Forest도 여러종류가 있음.
• 이거저거 다 해보자
• Let’s try a forest of conditional inference trees.
> install.packages('party')
> library(party)
5. Random Forest
• 얍!! 제발!!
> set.seed(415)
> fit <- cforest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp + Parch + Fare +
Embarked + Title + FamilySize + FamilyID,
data = train,
controls=cforest_unbiased(ntree=2000, mtry=3))
> Prediction <- predict(fit, test, OOB=TRUE, type = "response")
• 두둥 대박
참고링크
• 메인
– http://trevorstephens.com/kaggle-titanic-
tutorial/getting-started-with-r/
• https://www.kaggle.com/c/titanic/details/gett
ing-started-with-random-forests
• 위 링크를 타고 타고… 더 많은 자료를
찾아보세요.
감사합니다.

More Related Content

PDF
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
KEY
Ruby 2 array_hash
KEY
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
PDF
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
PPTX
Modern effective cpp 항목1
PPTX
Modern effective c++ 항목 3
PPTX
TCP가 실패하는 상황들
PPTX
Effective c++ 정리 chapter 4
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
Ruby 2 array_hash
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Modern effective cpp 항목1
Modern effective c++ 항목 3
TCP가 실패하는 상황들
Effective c++ 정리 chapter 4

Viewers also liked (20)

PPTX
Effective c++ 2
PPTX
C++정리 스마트포인터
PPT
Stagefright recorder part1
PPTX
일신오토클레이브 항온가압 오토클레이브 소개서
PPTX
Effective C++ 정리 chapter 3
PDF
Subject Guide in Energy Engineering @ UNIST Library
PDF
4. reverse engineering basic
PDF
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec
PPTX
Heat Tracing Solutions for LNG facilities in Arctic Conditions
PDF
151104_테헤란로 커피클럽_엑스엔지니어링(spend)
PDF
사설-공인인증 공존의 필요성 - 우리 보안 분야는 창조경제 시대를 맞을 준비가 되었는가? -
PPTX
실전프로젝트 정서경 양현찬
PPTX
디지털 플랜트를 위한 정보상호운용성 및 활용성 제고
PPTX
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
PDF
2017-03-27 From Researcher To Product Manager
PDF
IT보안과 사회공학(Social Engineering)
PPT
차량용 소프트웨어 개발 시 소프트웨어 아키텍처 고려사항
PDF
KAP 업종별기술세미나 12년 4월 #04
PPTX
일신오토클레이브 회사 소개서
PPTX
Effective c++chapter1 and2
Effective c++ 2
C++정리 스마트포인터
Stagefright recorder part1
일신오토클레이브 항온가압 오토클레이브 소개서
Effective C++ 정리 chapter 3
Subject Guide in Energy Engineering @ UNIST Library
4. reverse engineering basic
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec
Heat Tracing Solutions for LNG facilities in Arctic Conditions
151104_테헤란로 커피클럽_엑스엔지니어링(spend)
사설-공인인증 공존의 필요성 - 우리 보안 분야는 창조경제 시대를 맞을 준비가 되었는가? -
실전프로젝트 정서경 양현찬
디지털 플랜트를 위한 정보상호운용성 및 활용성 제고
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
2017-03-27 From Researcher To Product Manager
IT보안과 사회공학(Social Engineering)
차량용 소프트웨어 개발 시 소프트웨어 아키텍처 고려사항
KAP 업종별기술세미나 12년 4월 #04
일신오토클레이브 회사 소개서
Effective c++chapter1 and2
Ad

Titanic with r

  • 1. Kaggel + Titanic analysis with Data Science R 설치부터 Random forest까지 NEXT 16년 3학기 : Data visualization 김명찬
  • 3. 오늘의 과정 1. Kaggle 제출 예제 – 전부 죽이기 2. Manually fitted model – 수동으로 노가다 3. Deicision tree 4. Feature Engineering 5. Random Forest
  • 4. Kaggle • 머신러닝 문제 풀이 온라인 플랫폼 • 포럼 • 예제 • 등등 좋은 정보가 엄청 많음. – 단, 영어.
  • 5. 오늘의 문제 : 타이타닉 • Titanic : Machine Learning from Disaster • https://www.kaggle.com/c/titanic/ • Home -> Data 에서 데이터 다운로드 가능 • Home -> Make a submission 으로 제출 가능
  • 6. 일단 자료를 볼까요 • 다운로드 • train.csv • test.csv • test파일에는 한 컬럼이 없음. • 걔를 답으로 맞춰서 제출 하는 것!
  • 8. 파일 읽기 • table , summary 로 대충 보기 ( EDA??? ) – 모든 단계에서 버릇처럼 해보셔요 • 62% 가 돌아가셨네…  train <- read.csv("train.csv", stringsAsFactors=FALSE)  table(train$Survived)  prop.table(table(train$Survived))
  • 9. 1. 예측을 해보자 • 타이타닉은 엄청난 재난이었군. • 그럼 일단 탔으면 죽은걸로. • 제출해보자  test$Survived <- rep(0, 418)  submit <- data.frame(PassengerId = test$PassengerId, Survived = test$Survived)  write.csv(submit, file = "theyallperish.csv”, row.names = FALSE) Home -> Make a submission 으로 제출 가능
  • 10. 오우 • 이제 어디가서 모르는 사람에게 사기를 칠 수 있습니다. • 당신은 세계랭킹 6000등.
  • 11. 2. 수동으로 특징 찾기 • Lady first? 정말일까? • 정말이네…  summary(train$Sex)  prop.table(table(train$Sex, train$Survived))  prop.table(table(train$Sex, train$Survived), 1)
  • 12. 2. 수동으로 특징찾기 : 제출 • 위 과정과 동일  test$Survived <- 0  test$Survived[test$Sex == 'female'] <- 1  submit <- data.frame(PassengerId = test$PassengerId, Survived = test$Survived)  write.csv(submit, file = ”femaleSurvied.csv”, row.names = FALSE)
  • 14. 2. 수동으로 특징찾기 • 나이는 어떨까?  summary(train$Age)  train$Child <- 0  train$Child[train$Age < 18] <- 1
  • 15. 3. Decision tree • Greedy 한 decision tree 생성기 fit <- rpart(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data=train, method="class")
  • 17. 4. Featuring Engineering • 이미 있는 변수들 말고, 내가 직접 의미있는 변수를 만들어 내 보자. • 이름을 분석하면 뭔가 나오지 않을까?
  • 18. 4. Featuring Engineering • 먼저 , 이름을 보면 Sir, Ms 등 귀족 여부를 알 수 있다. • 이름을 쪼개서 신분을 알아내자!
  • 19. 4. Featuring Engineering • 두 테이블을 합친다. – 새로운 Feature를 만들어야 하기 때문에 – 한 테이블에서 작업해야 Factor가 같이 생성됨 > test$Survived <- NA > combi <- rbind(train, test)
  • 20. 4. Featuring Engineering • 어떻게 추출해야 하나? • 한 항에 대해서 연습해보자. > combi$Name <- as.character(combi$Name) > combi$Name[1] [1] "Braund, Mr. Owen Harris” > strsplit(combi$Name[1], split='[,.]') [[1]] [1] "Braund" " Mr" " Owen Harris“ > strsplit(combi$Name[1], split='[,.]')[[1]] [1] "Braund" " Mr" " Owen Harris“ > strsplit(combi$Name[1], split='[,.]')[[1]][2] [1] " Mr"
  • 21. 4. Featuring Engineering • 전체 테이블에 적용해 새로운 Feature 생성  combi$Title <- sapply(combi$Name, FUN=function(x) {strsplit(x, split='[,.]')[[1]][2]})  combi$Title <- sub(' ', '', combi$Title)  table(combi$Title) Capt Col Don Dona Dr Jonkheer Lady 1 4 1 1 8 1 1 Major Master Miss Mlle Mme Mr Mrs 2 61 260 2 1 757 197 Ms Rev Sir the Countess 2 8 1 1
  • 22. 4. Featuring Engineering • Factor들을 세세히 살펴보고 의미가 같은것을 묶음.  combi$Title[combi$Title %in% c('Mme', 'Mlle')] <- 'Mlle’  combi$Title[combi$Title %in% c('Capt', 'Don', 'Major', 'Sir')] <- 'Sir’  combi$Title[combi$Title %in% c('Dona', 'Lady', 'the Countess', 'Jonkheer')] <- 'Lady’  combi$Title <- factor(combi$Title)
  • 23. 4. Featuring Engineering • 한 가족은 아마도 공동운명체가 아닐까? – 같이 살거나 같이 죽거나… • 이름으로 같은 가족이었던 사람들을 알아내보자! – 성씨 같은걸로 알아내면 되겠지. – 흔한 성씨는 어떻게 처리할지 고민해보자
  • 24. 4. Featuring Engineering • 먼저… 대가족이 오히려 살기 어려웠을 수 있으니 • 가족 수를 먼저 구해본다. • 형제+배우자+부모+자식+본인  combi$FamilySize <- combi$SibSp + combi$Parch + 1
  • 25. 4. Featuring Engineering • Family name 찾아내 factor화 해보자 • 잘 보면 숫자가 맞지 않음… 3명이 있어야 하는 가족이 1명밖에 없는것 보이나요?  combi$Surname <- sapply(combi$Name, FUN=function(x) {strsplit(x, split='[,.]')[[1]][1]})  combi$FamilyID <- paste(as.character(combi$FamilySize), combi$Surname, sep="")  combi$FamilyID[combi$FamilySize <= 2] <- 'Small’  table(combi$FamilyID) 11Sage 3Abbott 3Appleton 3Beckwith 3Boulos 11 3 1 2 3 3Bourke 3Brown 3Caldwell 3Christy 3Collyer 3 4 3 2 3 3Compton 3Cornell 3Coutts 3Crosby 3Danbom 3 1 3 3 3 . . .
  • 26. 4. Featuring Engineering • 1, 2명 있는 개인플레이 분들을 모아서 분리하는 과정에서 오류가 생긴듯.. • 가족수가 잘 안맞는 분들도 있다. • 다른 접근 방법
  • 27. 4. Featuring Engineering • 성씨만 뽑아내서 따로 data frame으로 만들자  famIDs <- data.frame(table(combi$FamilyID))
  • 28. 4. Featuring Engineering • 여기서 2명 이하인 성씨를 삭제 • 원래 자료에서 famIDs에 속하는 성과 안 속하는 성으로 나눈다.  famIDs <- famIDs[famIDs$Freq <= 2,]  combi$FamilyID[combi$FamilyID %in% famIDs$Var1] <- 'Small’  combi$FamilyID <- factor(combi$FamilyID)
  • 29. 4. Featuring Engineering • 다시 train, test 분리후 • 디시전 트리 생성  train <- combi[1:891,]  test <- combi[892:1309,]  fit <- rpart( Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked + Title + FamilySize + FamilyID, data=train, method="class")
  • 30. 4. Featuring Engineering • 성별보다 정확한 Ms, Mr, Sir 등등
  • 32. 5. Random Forest • Random Forest란? • 먼저 ensemble이란? – 여러개의 Learning model을 가지고 조합함.
  • 33. 5. Random Forest • Random Forest – 랜덤하게 추출된 샘플로 – 여러개의 Decision tree를 만들어 – 각 tree들의 predict를 조합하여 최종 predict를 생성.
  • 34. 5. Random Forest • Random Forest는 빈값이 없어야함… • 나이에서 빈값 찾아 채우기  Agefit <- rpart(Age ~ Pclass + Sex + SibSp + Parch + Fare + Embarked + Title + FamilySize, data=combi[!is.na(combi$Age),], method="anova")  combi$Age[is.na(combi$Age)] <- predict(Agefit, combi[is.na(combi$Age),])
  • 35. 5. Random Forest • 또 빈 값 없나 찾아보자 • 채우자 – 의미를 생각해서 말이 되는 값으로 채워야 함! > summary(combi) > summary(combi$Embarked) C Q S 2 270 123 914 > which(combi$Embarked == '') [1] 62 830 > combi$Embarked[c(62,830)] = "S" > combi$Embarked <- factor(combi$Embarked)
  • 36. 5. Random Forest • 얘도 채우자… > summary(combi$Fare) Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 0.000 7.896 14.450 33.300 31.280 512.300 1 > which(is.na(combi$Fare)) [1] 1044 > combi$Fare[1044] <- median(combi$Fare, na.rm=TRUE)
  • 37. 5. Random Forest • FamilyID도 factor화 해서 정리하고 > combi$FamilyID2 <- combi$FamilyID > combi$FamilyID2 <- as.character(combi$FamilyID2) > combi$FamilyID2[combi$FamilySize <= 3] <- 'Small' > combi$FamilyID2 <- factor(combi$FamilyID2)
  • 38. 5. Random Forest • Random Forest 라이브러리 설치 후 실행!! > install.packages('randomForest') > library(randomForest) > set.seed(415) > fit <- randomForest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked + Title + FamilySize + FamilyID2, data=train, importance=TRUE, ntree=2000)
  • 39. 5. Random Forest • Feature별 중요도를 확인해보자 > varImpPlot(fit)
  • 40. 5. Random Forest • 예측 실행! 얍… 엉? • 더 떨어짐 > Prediction <- predict(fit, test) > submit <- data.frame(PassengerId = test$PassengerId, Survived = Prediction) > write.csv(submit, file = "firstforest.csv", row.names = FALSE)
  • 41. 5. Random Forest • Random Forest도 여러종류가 있음. • 이거저거 다 해보자 • Let’s try a forest of conditional inference trees. > install.packages('party') > library(party)
  • 42. 5. Random Forest • 얍!! 제발!! > set.seed(415) > fit <- cforest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked + Title + FamilySize + FamilyID, data = train, controls=cforest_unbiased(ntree=2000, mtry=3)) > Prediction <- predict(fit, test, OOB=TRUE, type = "response")
  • 44. 참고링크 • 메인 – http://trevorstephens.com/kaggle-titanic- tutorial/getting-started-with-r/ • https://www.kaggle.com/c/titanic/details/gett ing-started-with-random-forests • 위 링크를 타고 타고… 더 많은 자료를 찾아보세요.