0

我正在尝试使用 R 对以下数据执行逻辑回归:multinom()训练数据测试数据nnet

资料说明:

train 和 test 文件各有 10,000 行数据和 144 个变量,其中最后一列是“Predict”,也就是测试数据中应该预测的列。由于 predict 仅包含两个值 0 和 1(二进制),我开始使用multinom(). 大多数行是连续的数值,而少数字段包含名称字段,例如工作日名称(“Sunday”,“Monday”,...),这些都将被视为因素。

这是使用的以下代码:

train_data <- read.csv("train_data.csv")
test_data <- read.csv("test_data.csv")
library(nnet)
my_multinom <- multinom(formula= as.factor(Predict) ~ ., data= train_data)
predictions <- predict(my_multinom, test_data[,1:143])

输出是:

> summary(predictions)
   0    1   NA's 
 130   52   9818 

其中,NA's在 的Predict列中没有train_data

> summary(as.factor(train_data$Predict))
   0    1 
9734  266 

我想知道发生如此大量NA's(超过98%)的原因是什么以及如何进一步进行以避免这些NA's

4

1 回答 1

0

查看您的测试数据。预测为 的每一行都NA包含一个NA值:

all(apply(sapply(test_data[is.na(predictions),1:143], is.na),1,any))
#[1] TRUE

其他行不包含任何NA值:

any(apply(sapply(test_data[!is.na(predictions),1:143], is.na),1,any))
#[1] FALSE
于 2013-11-14T10:15:33.287 回答