прогноз нейросети на новых данных CSV - PullRequest
0 голосов
/ 04 декабря 2018

Я хотел бы прогнозировать новые данные, хранящиеся в CSV-файлах, с помощью пакета Neuralnet.Я просто нахожу странным, что выходные данные дают мне одинаковые постоянные значения для всех предсказанных данных.Я не знаю, хорошо ли я себя чувствую.Моя сеть насчитывает 95,3%

Мои данные об обучении имеют такую ​​структуру:

> head(dataset)
        POS Freq MAF Coverage protdesc Rendu
1 212812097 40.5   1     3994        1    NO
...
3 212812095 50.5   0     4000        0    YES

Мой класс Rendu имеет 2 значения NO или YES .и я хочу предсказать Rendu в моем CSV-файле, который имеет следующую структуру

     POS Freq MAF Coverage protdesc
1  25398280 24.4   0     1962        0

Здесь мой код :

library(neuralnet)
library(caret)
library(reshape2)
library(ggplot2)
library(stringr)
# define the filename
filename <- "/home/rico/Documents/TrainingMutNGS.csv"
# load the CSV file from the local directory
dataset <- read.csv(filename, header=FALSE)
# set the column names in the dataset
colnames(dataset) <- c("POS","Freq","MAF","Coverage","protdesc","Rendu")
str(dataset)
# Split into Train and Validation sets
# Training Set : Validation Set = 70 : 30 (random)
set.seed(100)
train <- sample(nrow(dataset), 0.7*nrow(dataset), replace = FALSE)
TrainSet <- dataset[train,]
ValidSet <- dataset[-train,]
summary(TrainSet)
summary(ValidSet)
dataset[,1:5] <- scale(dataset[,1:5])
dataset <- cbind(dataset, model.matrix(~ 0 + Rendu, dataset))
trainInds <- sample(1:dim(dataset)[1],8550)
#Get the indeces for the test data
testInds <- setdiff(1:11400, trainInds)
#Get the variable names for the input and output
predictorVars <- names(dataset)[1:5]
outcomeVars   <- names(dataset)[7:8]
#Paste together the formula 
modFormula <- as.formula(paste(paste(outcomeVars, collapse = "+"), "~", paste(predictorVars, collapse = " + ")))
modFormula
MutNet <- neuralnet(formula = modFormula, data=dataset[trainInds,],hidden = c(4), act.fct = "logistic",linear.output = FALSE, lifesign = "minimal")
classes <- neuralnet::compute(MutNet, dataset[testInds,-c(6:8)])
classRes <- classes$net.result
nnClass <- apply(classRes, MARGIN = 1, which.max)
origClass <- apply(dataset[testInds, c(7:8)], MARGIN = 1, which.max)
paste("The classification accuracy of the network is", round(mean(nnClass == origClass) * 100, digits = 2), "%")
#Load csv file for prediction
library(readr)
Variants <- read.table(("/home/rico/Documents/test.csv"), sep=";", header=T, dec=".", fill=TRUE)
predi <- neuralnet::compute(MutNet,Variants[,1:5])
predi

Я знаю, что все мои значения, содержащиев тесте должно быть «YES» в качестве значения, но вывод predi дает мне все то же значение, что я нахожу странным, вы понимаете?$ net.result

             [,1]          [,2]
 [1,] 0.953410406 0.04689899119
 [2,] 0.953410406 0.04689899119
 [3,] 0.953410406 0.04689899119
 [4,] 0.953410406 0.04689899119
 [5,] 0.953410406 0.04689899119
 [6,] 0.953410406 0.04689899119
 [7,] 0.953410406 0.04689899119
 [8,] 0.953410406 0.04689899119
 [9,] 0.953410406 0.04689899119
[10,] 0.953410406 0.04689899119
...