r - 应用归一化和结构更改后的数据值 NaN

标签 r time-series forecasting data-preprocessing

我试图在使用神经网络函数之前对我的值进行标准化,但是,当对我的值进行标准化时,它们会变成 NaN,并且我从 dataDelay 变量中的值变为具有 88 个变量而不是原始数量的单个观察.

library(neuralnet)
library(grid)
library(MASS)
library(ggplot2)
library(reshape2)
library(gridExtra)
library(neuralnet)

normalize <- function(x){
  return ((x - min(x)) / (max(x) - min (x)))
}


data <-
  structure(
    list(
      `USD/EUR` = c(
        1.373,
        1.386,
        1.3768,
        1.3718,
        1.3774,
        1.3672,
        1.3872,
        1.3932,
        1.3911,
        1.3838,
        1.4171,
        1.4164,
        1.3947,
        1.3675,
        1.3801,
        1.3744,
        1.3759,
        1.3743,
        1.3787,
        1.3595,
        1.3599,
        1.3624,
        1.3523,
        1.3506,
        1.3521
      )
    ),
    row.names = c(NA,-25L),
    class = c("tbl_df",
              "tbl", "data.frame")
  )


#time series delay
dataDelay <- embed(data[[1]], 4)[, 4:1]
#normalizing values
currencyNorm <- as.data.frame(lapply(dataDelay, normalize))

Input <- subset(dataDelay, select = c(dataDelay[1], dataDelay[2], dataDelay[3]))
Output <- subset(dataDelay, select = c(dataDelay[4]))

##NN model
currency_model <- neuralnet(Output~Input, hidden = 1, data = dataDelay)

数据延迟输出:

      [,1]   [,2]   [,3]   [,4]
[1,] 1.3730 1.3860 1.3768 1.3718
[2,] 1.3860 1.3768 1.3718 1.3774
[3,] 1.3768 1.3718 1.3774 1.3672
[4,] 1.3718 1.3774 1.3672 1.3872
[5,] 1.3774 1.3672 1.3872 1.3932
[6,] 1.3672 1.3872 1.3932 1.3911

标准化后:

NaN. NaN..1 NaN..2 NaN..3 NaN..4 NaN..5 NaN..6 NaN..7 NaN..8 NaN..9 NaN..10 NaN..11 NaN..12
1  NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN     NaN     NaN     NaN...

应用于完整数据集:

normalize <- function(x){
  return ((x - min(x)) / (max(x) - min (x)))
}


exchangeData <- read.csv("ExchangeUSDcsv.csv")
data <- exchangeData[,3]
data <- as.data.frame(data)

currencyNorm <- embed(normalize(data[[1]]), 4)[, 4:1]
head(currencyNorm)

currencyNorm <- as.data.frame(currencyNorm)

[在完整数据集上应用解决方案代码后出现问题]

完整数据集:https://www.dropbox.com/s/17exy1968lsidsc/ExchangeUSDcsv.csv?dl=0

应用于完整数据集时的输出:

     [,1] [,2] [,3] [,4]
[1,]   NA   NA   NA   NA
[2,]   NA   NA   NA   NA
[3,]   NA   NA   NA   NA
[4,]   NA   NA   NA   NA
[5,]   NA   NA   NA   NA
[6,]   NA   NA   NA   NA

最佳答案

如果你想对矩阵进行列标准化,请使用apply:

currencyNorm <- data.frame(apply(dataDelay, 2, normalize))

将完整数据标准化为整体:

currencyNorm <- normalize(dataDelay)

关于r - 应用归一化和结构更改后的数据值 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67074831/

相关文章:

r - 使用 ARIMA 和 tsibble 预测不规则股票数据

r - ggplot : display line that shows gap between two geom_lines

python - 如何从 Python 运行 R 脚本中包含的函数? R 函数的输入将来自 Python

r - 使用 dplyr 按名称从列表中提取

python - 基于 pandas 中的时间戳创建交互 session

R + ggplot : plotting irregular time series

r - 小时间序列分析

r - 计算 data.frame 中的行和和乘积

R按组无监督聚类(?)

r - 如何将回归摘要(例如 p 值和系数)输出到 rasterbrick 中?