首页 > 解决方案 > 我使用预处理进行数据标准化,并将这些数据用于神经网络。但是,我的值只有 0。请帮我修复我的代码

问题描述

#install.packages ("neuralnet")
library(neuralnet)
library(nnet)
library(caret)
eastair.df <- read.csv("EastWestAirlinesNN.csv")
# selected variables
vars <- c("Topflight", "Balance", "Qual_miles","cc1_miles","cc2_miles",
      "cc3_miles","Bonus_miles","Bonus_trans","Flight_miles_12mo",
      "Flight_trans_12","Online_12","Email","Club_member","Any_cc_miles_12mo",
      "Phone_sale")
#Convert NA to 0
eastair.df[is.na(eastair.df)] <- 0 
# partition the data
set.seed(111)
train.index <- sample(row.names(eastair.df), 0.6*dim(eastair.df)[1])
valid.index <- setdiff(row.names(eastair.df), train.index)
train.df <- eastair.df[train.index, vars]
valid.df <- eastair.df[valid.index, vars]
#Normalize the data with preprocessing
train.norm.df <- train.df
valid.norm.df <- valid.df
eastair.norm.df <- eastair.df
norm.values <- preProcess(train.df[,1:15], method =c("range"))
train.norm.df[, 1:15] <- predict(norm.values, train.df[, 1:15])
valid.norm.df[, 1:15] <- predict(norm.values, valid.df[, 1:15])
eastair.norm.df[, 1:16] <- predict(norm.values, eastair.df[, 1:16])

#neural networks model with training data nn1 <- neuralnet(Phone_sale ~ Topflight + Balance + Qual_miles + cc1_miles + cc2_miles + cc3_miles + Bonus_miles + Bonus_trans + Flight_miles_12mo + Flight_trans_12 + Online_12 + Email + Club_member + Any_cc_miles_12mo , data = train.norm.df,线性输出= F,隐藏= 5)

绘制训练神经网络

library(NeuralNetTools)
plotnet(nn1)

train.norm.pred <- compute(nn1, train.norm.df[,1:15])
train.norm.class <- apply(train.norm.pred$net.result,1,which.max)-1
confusionMatrix(as.factor(train.norm.class), 
as.factor(train.norm.df$Phone_sale))


validation.prediction <- compute(nn1, valid.df)
validation.class <-apply(validation.prediction$net.result,1,which.max)-1
confusionMatrix(as.factor(validation.class), as.factor(valid.df$Phone_sale))

标签: r

解决方案


推荐阅读