Я хотел бы прогнозировать новые данные, хранящиеся в 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