1
我有从Kaggle网站着名的泰坦尼克号数据集。我想用逻辑回归来预测乘客的生存。我在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')
我收到以下错误EVAL
错误(表达式的最后一行,envir,enclos):object'Age'not found
任何人都可以请解释是什么问题。我已经检查过新的变量,并且似乎没有任何问题。
这里是链接到泰坦尼克号的数据集https://www.kaggle.com/c/titanic/download/train.csv
的问题是,你的'newtest'数据帧没有'Age','Pclass'和'Fare'列名,但'测试。年龄','test.Pclass'和'test.Fare'。你必须重命名它们。 – Kabulan0lak
感谢您的帮助。我可以知道如何重命名数据框的列名称吗? –