У меня есть набор данных португальского банка, который я получил из репозитория машинного обучения UCI, который организован следующим образом:
> head(bank_data)
age job marital education default housing loan contact month day_of_week duration campaign pdays
1 1.53301567694 housemaid married basic.4y no no no telephone may mon 0.01047129616 -0.5659151042 0.1954115279
2 1.62897345569 services married high.school unknown no no telephone may mon -0.42149539806 -0.5659151042 0.1954115279
3 -0.29018211937 services married high.school no yes no telephone may mon -0.12451829578 -0.5659151042 0.1954115279
4 -0.00230878311 admin. married basic.6y no no no telephone may mon -0.41378170709 -0.5659151042 0.1954115279
5 1.53301567694 services married high.school no no yes telephone may mon 0.18788618843 -0.5659151042 0.1954115279
6 0.47748011065 services married basic.9y unknown no no telephone may mon -0.23250996934 -0.5659151042 0.1954115279
previous poutcome emp.var.rate cons.price.idx cons.conf.idx euribor3m nr.employed targetVar
1 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
2 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
3 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
4 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
5 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
6 -0.3494900415 nonexistent 0.6480843991 0.722713697 0.8864358006 0.7124512301 0.3316758805 no
Я пытаюсь использовать эти данные для создания нейронной сети, используя либо пакет nnet
, либо пакет neuralnet
(в зависимости от того, что проще или в конечном итоге работает). Похоже, прежде чем я смогу создать сеть, я должен сначала преобразовать все категориальные переменные в бинарные решения.
Есть ли способ, которым я могу "горячо" кодировать все эти столбцы одновременно?
Я попытался использовать пакет mltools
:
data <- one_hot(bank_data)
но это дает следующую ошибку:
Ошибка в
[.data.frame
(dt, , cols, with = FALSE): неиспользуемый аргумент (with = FALSE)
model.matrix(targetVar ~ . + 0, data = bank_data)[, -1]
- person Gregor Thomas   schedule 26.10.2017[, -1]
в моем последнем комментарии. Из-за+ 0
в формуле он не нужен. - person Gregor Thomas   schedule 27.10.2017matrix
. - person zsad512   schedule 27.10.2017targetVar
в левой части формулы:model.matrix(~ . + 0, data = bank_data)
. Но это звучит неправильно, я никогда не слышал о 1-горячем кодировании целевой переменной... - person Gregor Thomas   schedule 27.10.2017nnet
. Если вы используете интерфейс формулы дляnnet
, то он позаботится о кодировании за вас — вы можете просто сделатьnnet(targetVar ~ ., data = bank_data, <other options>)
. - person Gregor Thomas   schedule 27.10.2017nnet
формулу, вам не нужно сразу кодировать. Это делаетmodel.matrix
для вас. Если вы даетеnnet
матрицу или фрейм данных, предполагается, что вы сделали это сами. В справке?nnet
раздел Подробности начинается с Если ответ вformula
является фактором, создается соответствующая классификационная сеть.... Если у вас возникли проблемы с этим, я задаю отдельный вопрос. Возможно, также прочитайте этот вопрос, на который я ответил пару дней назад. - person Gregor Thomas   schedule 27.10.2017dput(head(your_data))
, чтобы я мог исправить загадочную ошибку, которую вы получаете с помощью mltools? - person Ben   schedule 09.11.2017