【问题标题】:Deep learning, neural network深度学习、神经网络
【发布时间】:2019-05-14 01:21:15
【问题描述】:

我有一个关于在分类数据中应用神经网络的问题。

1- 我有一个数字输出 (Connection.Duration)

2- 我有 5 个输入,其中 4 个(EVSE.IDUser.IDFeeDay)是分类输入,1 个(Time)是数字输入。

我想应用神经网络来预测Connection.Duration。我不知道用于分类数据的正确命令。我使用了model.matrix,但我不知道如何继续使用包含分类数据的新数据框 (m)。

我想寻求帮助。

data$Fee <- as.factor(data$Fee)
data$EVSE.ID <- as.factor(data$EVSE.ID)
data$User.ID <- as.factor(data$User.ID)
data$Day <- as.factor(data$Day)
data$Time <- as.factor(data$Time)
data$Connection.Duration <- as.factor(data$Connection.Duration)

m <- model.matrix(Connection.Duration ~ EVSE.ID+Time+Day+Fee+User.ID,
              data= data)

# Neural Networks 
n <- neuralnet(Connection.Duration ~ EVSE.ID+Time+Day+Fee+User.ID,
           data = m,
           hidden=c(100,60))

# Data partition 
set.seed(1234)
ind <- sample(2, nrow(m), replace = TRUE, prob = c(0.7, 0.3))
training <- m[ind==1,1:5]
testing <- m[ind==2,1:5]
trainingtarget <- m[ind==1, 6]
testingtarget <- m[ind==2, 6]

# Normalize
m <- colMeans(training)
s <- apply(training, 2, sd)
training <- scale(training, center = m, scale = s)
testing <- scale(testing, center = m, scale = s)

# Create Model
model <- keras_model_sequential()
model %>%
layer_dense(units = 5, activation = 'relu', input_shape = c(5)) %>%
layer_dense(units = 1)

# Compile
model %>% compile(loss= 'mse',
              optimizer= 'rmsprop',
              metrics='mae')
# Fit model 
mymodel <- model %>%

  fit(training,
      trainingtarget,
      epochs= 100,
      batch_size = 32,
      validation_split = 0.2)

# Evaluate 
model %>% evaluate(testing, testingtarget)
pred <- model %>% predict(testing)
mean(testingtarget- pred^2)
plot(testingtarget, pred)

# Fine-tune Model
model <- keras_model_sequential()
model %>%
layer_dense(units = 100, activation = 'relu', input_shape = c(5)) %>%
 layer_dropout(rate = 0.4) %>%
layer_dense(units = 60, activation = 'relu', input_shape = c(5)) %>%
 layer_dropout(rate = 0.2) %>%
 layer_dense(units = 1)

# Compile
model %>% compile(loss= 'mse',
              optimizer= optimizer_rmsprop(lr=0.0001),
              metrics='mae')

# Fit model
mymodel <- model %>%
  fit(training,
      trainingtarget,
      epochs= 100,
      batch_size = 32,
      validation_split = 0.2)

# Evaluate 
model %>% evaluate(testing, testingtarget)
  pred <- model %>% predict(testing)
  mean(testingtarget- pred^2)
  plot(testingtarget, pred)

【问题讨论】:

    标签: r


    【解决方案1】:

    您要查找的内容称为“一种热编码”。 tensorflow/keras 中有一些函数可以帮助进行编码。

    但除此之外,我会尝试提前完成。我不会依赖model.matrix,因为它不能满足您的需求。

    您可以轻松编写自己的函数,但这里有一个使用 mltools 包的示例:

    library(data.table)
    library(mltools)
    one_hot(data.table(x = factor(letters), n = 1:26))
    

    注意:它需要data.table 而不是data.frame,但您可以来回转换数据。

    【讨论】:

    • 谢谢你,我可以请你帮忙吗?这段代码有效还是我需要完全改变它?
    猜你喜欢
    • 2020-05-15
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2020-11-24
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多