отображение списков с помощью map и map2 для построения матрицы - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь отобразить список под названием TrainTestData, внутри списка есть ряд других списков, один из которых называется C Farolillo. Внутри этого списка у меня есть данные о поездах и тестах.

Список выглядит следующим образом:

enter image description here

Я пытаюсь нанести на картусписки для создания нового типа матрицы.

dtrain <- map(TrainTestData, ~map2(
  X_train, Y_train, ~ xgb.DMatrix(data = .x, label = .y, missing = "NaN")
))

Я получаю следующую ошибку:

Ошибка в map2 (X_train, Y_train, ~ xgb.DMatrix (data = .x, label = .y, missing = "NaN")): объект 'X_train' не найден

Где я иду не так? Я пробовал несколько вариантов приведенного выше кода и не могу заставить что-либо работать.

Следующее выдает ту же ошибку:

dtrain <- map(TrainTestData$`C Farolillo`, ~map2(
  X_train, Y_train, ~ xgb.DMatrix(data = .x, label = .y, missing = "NaN")
))

Проблема в том, что у меня есть списки внутри X_train lists?

> class(TrainTestData)
[1] "list"
> class(TrainTestData$`C Farolillo`)
[1] "list"
> class(TrainTestData$`C Farolillo`$X_train)
[1] "list"
> class(TrainTestData$`C Farolillo`$X_train[[1]])
[1] "matrix"

Примечание: я не могу предоставить пример кода, так как данные слишком велики.

Редактировать: Я могу создавать матрицы, используя:

xgb.DMatrix(data = TrainTestData$`C Farolillo`$X_train[[1]], label = TrainTestData$`C Farolillo`$Y_train[[1]], missing = "NaN")

Для 3-х матриц внутри X_train и Y_train дают:

> xgb.DMatrix(data = TrainTestData$`C Farolillo`$X_train[[1]], label = TrainTestData$`C Farolillo`$Y_train[[1]], missing = "NaN")
xgb.DMatrix  dim: 2190 x 4  info: label  colnames: yes
> xgb.DMatrix(data = TrainTestData$`C Farolillo`$X_train[[2]], label = TrainTestData$`C Farolillo`$Y_train[[2]], missing = "NaN")
xgb.DMatrix  dim: 2190 x 4  info: label  colnames: yes
> xgb.DMatrix(data = TrainTestData$`C Farolillo`$X_train[[3]], label = TrainTestData$`C Farolillo`$Y_train[[3]], missing = "NaN")
xgb.DMatrix  dim: 2190 x 4  info: label  colnames: yes

РЕДАКТИРОВАТЬ:

У меня есть некоторые данные:

TrainTestData <- list(Recoletos = list(X_train = list(structure(c(NA, NA, 1.3, 
NA, NA, 80, NA, NA, 225), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("CO", "NO2", "NOx"))), structure(c(1.3, 1.2, 1.5, 
80, 76, 76, 225, 202, 276), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("CO", "NO2", "NOx"))), structure(c(1.5, 1, 1, 76, 
65, 67, 276, 165, 181), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1, 1.3, 1.1, 67, 93, 
85, 181, 319, 274), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.1, 1.5, 1.2, 85, 83, 
80, 274, 368, 253), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.2, 1.4, 2.2, 80, 84, 
92, 253, 287, 432), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(2.2, 2, 1.5, 92, 85, 
73, 432, 399, 298), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.5, 1.4, 1.3, 73, 70, 
73, 298, 237, 260), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.3, 1.4, 1.7, 73, 84, 
88, 260, 289, 314), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.7, 2.4, 2.8, 88, 101, 
100, 314, 530, 657), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(2.8, 2.3, 1.3, 100, 
101, 74, 657, 539, 233), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.3, 1.1, 1.1, 74, 71, 
42, 233, 205, 110), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.1, 1.3, 1.5, 42, NA, 
75, 110, NA, 255), .Dim = c(3L, 3L), .Dimnames = list(NULL, c("CO", 
"NO2", "NOx"))), structure(c(1.5, 0.8, 1.2, 75, 55, 77, 255, 
140, 238), .Dim = c(3L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
"NOx"))), structure(c(1.2, 2.1, 2.3, 77, 121, 109, 238, 515, 
507), .Dim = c(3L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
"NOx"))), structure(c(2.3, 1.8, 2.8, 109, 97, 120, 507, 446, 
689), .Dim = c(3L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
"NOx"))), structure(c(2.8, 1.8, 1.2, 120, 96, 68, 689, 396, 250
), .Dim = c(3L, 3L), .Dimnames = list(NULL, c("CO", "NO2", "NOx"
))), structure(c(1.2, 1.4, 1.1, 68, 87, 81, 250, 310, 256), .Dim = c(3L, 
3L), .Dimnames = list(NULL, c("CO", "NO2", "NOx"))), structure(c(1.1, 
1.1, 1.4, 81, 80, 83, 256, 225, 249), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("CO", "NO2", "NOx"))), structure(c(1.4, 1.5, 1.4, 
83, 78, 74, 249, 254, 270), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("CO", "NO2", "NOx"))), structure(c(1.4, 3.3, 1.9, 
74, 107, 110, 270, 662, 424), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("CO", "NO2", "NOx"))), structure(c(1.9, 2, 1, 110, 
116, 73, 424, 508, 221), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1, 0.9, 1.1, 73, 74, 
87, 221, 207, 240), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx"))), structure(c(1.1, 1.3, 1.2, 87, 104, 
76, 240, 299, 261), .Dim = c(3L, 3L), .Dimnames = list(NULL, 
    c("CO", "NO2", "NOx")))), Y_train = list(structure(c(NA, 
NA, 94), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(94, 
82, 130), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(130, 
65, 75), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(75, 
147, 123), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(123, 
186, 113), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(113, 
132, 222), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(222, 
205, 147), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(147, 
109, 122), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(122, 
134, 147), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(147, 
280, 364), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(364, 
286, 103), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(103, 
88, 45), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(45, 
NA, 117), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(117, 
55, 105), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(105, 
257, 260), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(260, 
228, 371), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(371, 
195, 119), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(119, 
145, 115), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(115, 
95, 109), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(109, 
115, 128), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(128, 
362, 205), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(205, 
256, 96), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(96, 
87, 100), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO")), structure(c(100, 
127, 121), .Dim = c(3L, 1L), .Dimnames = list(NULL, "NO"))), 
    X_test = list(structure(c(1.2, 76, 202), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1, 65, 165
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.3, 93, 319), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1.5, 83, 368
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.4, 84, 287), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(2, 85, 399
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.4, 70, 237), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1.4, 84, 289
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(2.4, 101, 530), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(2.3, 101, 
    539), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.1, 71, 205), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1.3, NA, NA
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(0.8, 55, 140), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(2.1, 121, 
    515), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.8, 97, 446), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1.8, 96, 396
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.4, 87, 310), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(1.1, 80, 225
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.5, 78, 254), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(3.3, 107, 
    662), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(2, 116, 508), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(0.9, 74, 207
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx"))), structure(c(1.3, 104, 299), .Dim = c(1L, 3L), .Dimnames = list(
        NULL, c("CO", "NO2", "NOx"))), structure(c(0.9, 76, 194
    ), .Dim = c(1L, 3L), .Dimnames = list(NULL, c("CO", "NO2", 
    "NOx")))), Y_test = list(structure(82, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(65, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(147, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(186, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(132, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(205, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(109, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(134, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(280, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(286, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(88, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(NA_real_, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(55, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(257, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(228, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(195, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(145, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(95, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(115, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(362, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(256, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(87, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(127, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")), structure(77, .Dim = c(1L, 1L), .Dimnames = list(
        NULL, "NO")))))

Когда я запускаю следующий код:

dtrain <- map(TrainTestData, ~map2(
  .$X_train, .$Y_train, ~ xgb.DMatrix(data = .x, label = .y, missing = "NaN")))

dtest <- map(TrainTestData, ~map(
  .$X_test, ~ xgb.DMatrix(data = .x, missing = "NaN")))


watchlist <- list("train" = dtrain)
params <- list("eta" = 0.1, "max_depth" = 5, "objective"="reg:squarederror", "eval_metric"= "rmse",
               "set.seed" = 176)


xgb.model <- map(
  dtrain, ~ xgboost(params = params, data = .x, nrounds = 40, watchlist)
)

Я получаю эту ошибку:

Ошибка в xgb.get.DMatrix (данные, метка, отсутствует, вес): xgboost: неверные входные данные Дополнительно: предупреждающее сообщение: В xgb.get.DMatrix (данные, метка, отсутствует, вес): xgboost: метка будет игнорироваться.

Однако я предоставил label.

РЕДАКТИРОВАТЬ:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...