1

Я отлаживаю код с помощью пакета Random Forest, практически без предыдущего опыта R.R - Случайный лес - Удалить Новые уровни факторов, не присутствующие в данных обучения

Я достиг точки, где, excecuting predict.randomForest, я получаю ошибку:

New factor levels not present in the training data.

Searching этот сайт я нашел причину и понял, что мне нужно, чтобы удалить записи, которые вызывают проблемы ,

Как я могу выделить (выяснить), какие столбцы/строки вызывают проблемы?

+2

Start, проверяя, какие столбцы в матрице предикторов являются факторами. Вы можете запустить 'str (X)', где 'X' является матрицей предикторов в ваших данных обучения. Затем сделайте то же самое в своих тестовых данных и посмотрите на выходе, чтобы увидеть, какие из них имеют разные числа или уровни уровней. – ulfelder

+0

Спасибо! У объекта RF есть много вещей на нем ... какая из них - матрица предикторов, о которой вы говорите? И как я могу проверить, является ли каждый столбец фактором? – DaroK

ответ

4

Предположим, у вас есть train.data, который вы использовали для построения модели, test.data, что теперь вы хотите, чтобы получить прогнозы, и ваш коэффициент переменной factor.var1, то вы можете сделать:

levels(test.data$factor.var1) %in% levels(train.data$factor.var1) 

Который приведет к созданию логического вектора, соответствующего уровням факторов в test.data, причем записи «FALSE» являются уровнями факторов, которых нет в вашем файле train.data.

+4

И если вы хотите сделать это для кучи переменных одновременно, вы можете использовать 'lapply (c ([имена переменных, которые являются факторами в кавычках, разделенных запятыми]), levels (test.data [, x])% в% levels (train.data [, x]) ' – ulfelder

+0

Танки оба !!! У меня уже есть уровни для каждого фактора для переменной прогноза. Но что касается одного из тренинга ... его внутри сложного объекта RandomForest .. Как я могу узнать, как добраться до фактических данных? – DaroK

+0

Если у вас нет доступа к данным обучения, я не уверен, как вы получите эту информацию - документацию R [randomForest] (https: // cran .r-project.org/web/packages/randomForest/randomForest.pdf) может показать вам, что возвращается с объектом RF, и я не вижу ничего, что было бы полезно для получения уровней. Я бы предложил получить если вы можете. – Tchotchke

0

simple.solutions на это было бы rbind тестовых данных с обучающими данными и предсказать, то подмножество ряда, который вы хотите предсказание .Это работал для меня

 Смежные вопросы

  • Нет связанных вопросов^_^