Сокращение набора переменных кадра данных прогнозирования путем извлечения переменных из модели дерева - PullRequest
0 голосов
/ 14 марта 2011

Я построил модель дерева rpart, и теперь я хочу извлечь используемые переменные в этой модели из большого фрейма данных прогноза (более 7.000 переменных), потому что мне нужно провести некоторые вычисления на этом фрейме данных прогнозирования до прогнозирования, и этот расчет превышаетобъем памяти.

Теперь я не знаю, как извлечь переменные из модели rpart.Для randomForest-моделей есть функция varUsed, , но, возможно, проблема может быть устранена в общем виде, как и для glm-модели .

names () в rpart-Модель возвращает:

"frame"     "where"     "call"      "terms"     "cptable"   "splits"    "method"
"parms"     "control"   "functions" "model"     "y"         "ordered" 

Значение разделения возвращает:

count ncat     improve index        adj  
**m24_a_ec_fakt**               6000   -1 0.026346646  0.15 0.00000000  
**m24_a_ec_fakt_dwl**           6000   -1 0.026346646  0.15 0.00000000  
**m3_a_fak_rech**               6000   -1 0.022821246  0.30 0.00000000  
**m9_a_ec_fakt**                6000   -1 0.021599372  0.05 0.00000000  
**m9_a_ec_fakt_dwl**            6000   -1 0.021599372  0.05 0.00000000  
... 

Разделение - это матрица, а первый столбец (?) - это имена переменных.

Могу ли я как-то ссылаться на эту матрицу, чтобы отфильтровать переменные моего фрейма данных прогноза по имени?

что-то вроде:

newPredDM<- oldPredDM[  --GET THE VARIABLE NAMES FROM rpart-Modell somehow--  ]

привет и спасибо за помощь, Rainer

1 Ответ

0 голосов
/ 14 марта 2011

См. help("rpart.object") для структуры возвращаемого значения.Начиная с

frame: кадр данных с одной строкой для каждого узла в дереве.[...] Элементы 'frame' включают в себя 'var', фактор, дающий переменную, используемую в разбиении на каждом узле

, вы можете использовать levels(fit$frame$var)[-1], чтобы получить столбцы в виде строки символоввектор и используйте что-то вроде

newPredDM<- oldPredDM[, levels(fit$frame$var)[-1]]

для вашего выбора.

Надеюсь, это поможет.

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