2017-01-15 13 views
1

Может ли кто-нибудь предоставить мне подробный пример использования функции Caret rfe с помощью модели glm или glmnet? Я пробовал что-то вроде этого:Как сделать рекурсивное устранение функции с логистической регрессией?

rfe_records <- Example_data_frame 

rfe_ctrl <- rfeControl(functions = caretFuncs, method = "repeatedcv", repeats = 5, verbose = TRUE, classProbs = TRUE, summaryFunction = twoClassSummary) 

number_predictors <- dim(rfe_records)[2]-1 

x <- dplyr::select(rfe_records, -outcomeVariable) 
y <- as.numeric(rfe_records$outcomeVariable) 

glmProfile <- rfe(x, y, rfeControl = rfe_ctrl, sizes = c(1:number_predictors), method="glmnet", preProc = c("center", "scale"), metric = "Accuracy") 
print(glmProfile) 

Но результаты, которые я получаю, не то, что мне нужно. Я заданная точность, как метрика, но я получил:

Recursive feature selection 

Outer resampling method: Cross-Validated (10 fold, repeated 5 times) 

Resampling performance over subset size: 

Variables RMSE Rsquared RMSESD RsquaredSD Selected 
     1 0.5047 0.10830 0.04056 0.11869  * 
     2 0.5058 0.09386 0.04728 0.11332   
     3 0.5117 0.08565 0.04999 0.10211   
     4 0.5139 0.07490 0.05042 0.10048   
     5 0.5166 0.07678 0.05456 0.09966   
     6 0.5202 0.08203 0.06174 0.10822   
     7 0.5187 0.08471 0.06207 0.10893   
     8 0.5168 0.07850 0.05939 0.09697   
     9 0.5175 0.08228 0.05966 0.10068   
     10 0.5176 0.08180 0.05980 0.10042   
     11 0.5179 0.08015 0.05950 0.09905   

The top 1 variables (out of 1): 
    varName 
+1

Может быть, не относится к этому сайту, поскольку он касается почти исключительно вопросов программирования R. –

+0

Где вы говорите, что вы выполняете логистическую регрессию? – EdM

+1

Вопросы о том, как использовать программное обеспечение, как правило, не относятся к теме. Это не вопрос * программирования *, тем не менее, поэтому он будет отключен от темы [SO]. Кажется, он просит учебник; это вне темы повсюду в системе SE, AFAIK. – gung

ответ

1

Согласно this pagecaret использует класс переменного исхода, когда он определяет, следует ли использовать регрессию или классификацию с функцией как glmnet, что может сделать либо. Согласно вашему коду, вы указали переменную исхода как числовую с as.numeric(), поэтому glmnet решил сделать регрессию, а не классифицировать по вашему желанию. Укажите переменную результата в качестве двухуровневого фактора, чтобы получить классификацию.