美文网首页
神经网络初探

神经网络初探

作者: Apache_lin | 来源:发表于2024-05-13 14:45 被阅读0次
# install.packages("keras")
# install.packages("tensorflow")
library(tensorflow)
install_tensorflow()

# remove.packages("tensorflow")
#调包
library(keras)
#导入数据集
setwd("E:\\临时工作\\彬锋\\archive")
df <- read.csv("cs-training.csv",header = TRUE)
#去除不必要变量及变量重命名
df <- df[2:12]
colnames(df) <- c("y","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10")
##处理缺失值
#看一下变量情况
summary(df)
#查看缺失
colSums(is.na(df))
#对x5用中位数填充
x5_mean <- mean(df$x5,na.rm =TRUE)
df[which(is.na(df$x5)),"x5"] <- x5_mean
#对x10用0填充
df[which(is.na(df$x10)),"x10"] <- 0
##处理异常值
#定义切片,将上极值设为99%超出部分按照99%值计算,同理设置下极值
block<-function(x,lower=T,upper=T){
  if(lower){
    q1<-quantile(x,0.01)
    x[x<=q1]<-q1
  }
  if(upper){
    q99<-quantile(x,0.99)
    x[x>q99]<-q99
  }
  return(x)
}
#运行盖帽
features <- c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10")
for (i in features){
  df[i]=sapply(df[i],block)
}
##标准中心化处理
for (i in features){
  df[i]=scale(df[i],center = TRUE, scale = TRUE)
}
##划分训练集与测试集,按照7:3比例
set.seed(1)
sub<-sample(1:nrow(df),round(nrow(df)*0.7))
length(sub)
train<-df[sub,]
test<-df[-sub,]
#将训练集与测试集矩阵化
x_train <- as.matrix(train[features])
y_train <- as.matrix(train$y) 
x_test <- as.matrix(test[features])
y_test <- as.matrix(test$y)
####基于keras构建神经网络,并进行训练
# 创建模型


# 创建模型
model <- keras_model_sequential()

# 定义连接损失函数、优化器和评估指标
model %>% 
  layer_dense(units = 64, activation = 'relu', input_shape = c(10)) %>% 
  layer_dropout(rate = 0.5) %>% 
  layer_dense(units = 64, activation = 'relu') %>% 
  layer_dropout(rate = 0.5) %>% 
  layer_dense(units = 1, activation = 'sigmoid') %>% 
  compile(
    loss = 'binary_crossentropy',
    optimizer = 'rmsprop',
    metrics = metric_binary_accuracy
  )
# 训练
model %>% fit(x_train, y_train, epochs = 20, batch_size = 128)

相关文章

网友评论

      本文标题:神经网络初探

      本文链接:https://www.haomeiwen.com/subject/qvypfjtx.html