2016-09-07 3 views
1

카글 글 웹 사이트에서 유명한 타이타닉 데이터 세트를 보유하고 있습니다. 로지스틱 회귀를 사용하여 승객의 생존을 예측하고 싶습니다. R에서 glm() 함수를 사용하고 있습니다. 먼저 데이터 프레임 (총 행 = 891)을 두 개의 데이터 프레임 즉 열 (행 1에서 800) 및 테스트 (행 801에서 891로)로 나눕니다. 코드는타이타닉 데이터 세트에 로지스틱 회귀 적용

` 
>> data <- read.csv("train.csv", stringsAsFactors = FALSE) 

>> names(data) 

`[1] "PassengerId" "Survived" "Pclass"  "Name"  "Sex"    "Age"   "SibSp"  
[8] "Parch"  "Ticket"  "Fare"  "Cabin"  "Embarked" ` 

#Replacing NA values in Age column with mean value of non NA values of Age. 
>> data$Age[is.na(data$Age)] <- mean(data$Age, na.rm = TRUE) 

#Converting sex into binary values. 1 for males and 0 for females. 
>> sexcode <- ifelse(data$Sex == "male",1,0) 
#dividing data into train and test data frames 
>> train <- data[1:800,] 

>> test <- data[801:891,] 
#setting up the model using glm() 

>> model <- glm(Survived~sexcode[1:800]+Age+Pclass+Fare,family=binomial(link='logit'),data=train, control = list(maxit = 50)) 

#creating a data frame 
>> newtest <- data.frame(sexcode[801:891],test$Age,test$Pclass,test$Fare) 

>> prediction <- predict(model,newdata = newtest,type='response') 

`

을 다음과 같이 내가 코드 나는 다음과 같은 오류를 평가에

오류가

prediction <- predict(model,newdata = newtest,type='response') 

(EXPR의 마지막 줄을 실행으로 , envir, enclos) : 'Age'개체가 없습니다.

누구든지 문제를 설명해 주실 수 있습니까? 내가 newteset 변수를 확인하고 거기에 어떤 문제가없는 것 같습니다. 내가 주석으로, 당신은 당신의 열 이름에 문제가있다,

data$sexcode <- ifelse(data$Sex == "male",1,0) 

다음 : 여기

는 거대한 데이터에 대한 링크가 먼저, dataframe에 직접 sexcode를 추가해야 https://www.kaggle.com/c/titanic/download/train.csv

+1

문제는 당신'newtest' 데이터 프레임'Age','Pclass' 및 열 이름과 같은 'Fare'하지만,'검사를하지 않는다는 것입니다 :

그래서 여기에 전체 작업 코드입니다. Age','test.Pclass' 및'test.Fare'를 사용합니다. 이름을 변경해야합니다. – Kabulan0lak

+0

도움에 감사드립니다. 데이터 프레임의 열 이름을 바꾸는 방법을 알고 있습니까? –

답변

2

을 설정입니다 수동으로 만들면 newtest 데이터 프레임에 생성됩니다. 직접 test 데이터 프레임을 사용할 수 있습니다.

data <- read.csv("train.csv", stringsAsFactors = FALSE) 
    data$Age[is.na(data$Age)] <- mean(data$Age, na.rm = TRUE) 
    data$sexcode <- ifelse(data$Sex == "male",1,0) 

    train <- data[1:800,] 
    test <- data[801:891,] 

    model <- glm(Survived~sexcode+Age+Pclass+Fare,family=binomial(link='logit'),data=train, control = list(maxit = 50)) 

    prediction <- predict(model,newdata = test,type='response')