Создание ансамбля Случайного леса и простой глубокой нейронной сети в R? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь разработать метод ансамбля между Случайным лесом и простой глубокой нейронной сетью в R, где объекты, выбранные в RF, будут входом для DNN в той же последовательности, в которой они были выбраны в RF. Я застрял в точке, где я не могу сделать ввод для DNN через RF. Я, кто-то здесь, может помочь мне с вопросом

data = read.csv(file ="/home/user/DNN_RF/new_with_removed_zeros_y.csv", header = T)
mvindex = unique (unlist (lapply (data, function (x) which (is.na (x)))))
data <- na.omit(data)
summary(data)
str(data)
input<-data[,2:674]
head(input)
indx <- sapply(input, is.factor)
input <- as.data.frame(lapply(input, function(x) as.numeric(as.character(x))))
set.seed(8089)

#Min Max decision

max_data = apply(input, 2 , max)
min_data = apply(input, 2, min)

# Data Sampling and trainnig testting division
input_scaled <- as.data.frame(scale(input,center = min_data, scale = max_data - min_data))
head(input_scaled)
View(input_scaled)
data$y <- as.factor(data$y)
class = data$y
class = as.data.frame(class)
class_1=with(class, as.data.frame(model.matrix(~class+0)))
data_2 = as.data.frame(cbind(data, class_1))

#Data splitting
index = sample(1:nrow(data_2),round(0.70*nrow(data_2)))
train_data <- as.data.frame(data_2[index,])
test_data <- as.data.frame(data_2[-index,])
train_data <- train_data[,2:676]
test_data <- test_data[,2:676]

#Formula Creation and Model definintion
n = names(data_2[2:674])
f = as.formula(paste("class0 + class1 ~",  paste(n, collapse = " + ")))
net_model = neuralnet(f, data=train_data, hidden=c(10, 8, 5), linear.output=T)
plot(net_model)

#Predictions
predict_net_test <- compute(net_model,test_data[,1:674])
predict_result<-round(predict_net_test$net.result, digits = 0)
net.prediction = c("Inactive", "Active")[apply(predict_result, 1, which.max)]
predict.table = table(data_2$y[-index], net.prediction)
require(gmodels)
CrossTable(x = data_2$y[-index], y = net.prediction, prop.chisq=FALSE)
...