![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]() ![]()
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 ![]() |
Подскажите, пожалуйста, кто чем может)). Я делаю логистическую регрессию. Все предикторы биноминальные (0,1). Y-зависимая переменная(бинарная 0 - нет события(это хорошо), 1-есть событие(это плохо)). Дело в том, что нули к нулям, он мало мальски правильно соотносит, но 50% единиц(плохих) у него попадают к нулям(хорошим).Т.е. неверное определение. Как понять, почему так происходит и что сделать, чтобы улучшить классификацию, хотя бы до 85% точности?
Доп. инфо, я гуглила, и нашла метод Feature Selection и его реализацию в R Boruta. Выделила 6 предикторов, думала счастье рядом, сейчас построила модель, но не тут-то было, классификация такая же некачественная:(( Может что-то не то сделала?(( Что делать? (с)(Чернышевский Н.Г.)
Прикрепленные файлы
|
|
![]() |
![]() |
![]() |
![]()
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 ![]() |
К сожалению вопросы есть
![]() Код str(df) 'data.frame': 823 obs. of 17 variables: $ isOneDay : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ sizeList : Factor w/ 4 levels "0","1","2","3": 1 1 1 2 1 1 1 1 1 1 ... $ licensesList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosWinnerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosWinnerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosPlacerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosPlacerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ inspectionsInFutureNumList : Factor w/ 4 levels "0","1","2","8": 2 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsNumList : Factor w/ 11 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsNoViolationsNumList : Factor w/ 11 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsFailsList: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ courtPracticeList : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 1 2 1 ... $ digestGreenList : Factor w/ 9 levels "1","2","3","4",..: 4 3 4 1 4 3 2 2 3 3 ... $ linkedEntitiesByCeoNumList : Factor w/ 2 levels "0","1": 2 2 1 2 1 2 2 1 2 2 ... $ linkedEntitiesByFounderNumList : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ... $ linkedEntitiesChildrenNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ digestGreyList : Factor w/ 8 levels "0","1","2","3",..: 2 3 3 5 2 2 3 5 3 4 ... - attr(*, "na.action")=Class 'omit' Named int [1:1345] 12 14 17 26 29 42 43 49 50 57 ... .. ..- attr(*, "names")=8322456 [1:1345] "12" "14" "17" "26" ... вот реальные данные newdata=read.csv("x.csv") удалите из наборе x.csv переменную Y, я хочу ее предсказать newdata=data.frame(lapply(newdata, factor)) там не должно быть Y Код 'data.frame': 11 obs. of 16 variables: $ sizeList : Factor w/ 4 levels "0","1","2","3": 2 1 2 4 2 4 1 1 4 3 ... $ licensesList : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ... $ gosWinnerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 2 1 2 ... $ gosWinnerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 2 1 2 ... $ gosPlacerNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ gosPlacerSumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsInFutureNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsNoViolationsNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsFailsList: Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ courtPracticeList : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 1 2 1 2 ... $ digestGreenList : Factor w/ 5 levels "4","5","6","7",..: 1 1 1 3 2 5 4 3 3 3 ... $ linkedEntitiesByCeoNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ linkedEntitiesByFounderNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 1 1 ... $ linkedEntitiesChildrenNumList : Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 2 2 2 ... $ digestGreyList : Factor w/ 3 levels "0","1","2": 1 3 2 2 2 2 3 3 2 2 ... все переменные одинаковые у тип у них фактор! Error in predict.randomForest(model, newdata = newdata, type = "class") : Type of predictors in new data do not match that of the training data. Кстати если в наборе х.csv есть переменная Y он дает предсказания. Но смысл, мне нужно на новых данных это сделать, а на них заведомо нет игрика |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
К сожалению вопросы есть ![]() Код str(df) 'data.frame': 823 obs. of 17 variables: $ isOneDay : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ sizeList : Factor w/ 4 levels "0","1","2","3": 1 1 1 2 1 1 1 1 1 1 ... $ licensesList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosWinnerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosWinnerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosPlacerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ gosPlacerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ inspectionsInFutureNumList : Factor w/ 4 levels "0","1","2","8": 2 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsNumList : Factor w/ 11 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsNoViolationsNumList : Factor w/ 11 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsFailsList: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ courtPracticeList : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 1 2 1 ... $ digestGreenList : Factor w/ 9 levels "1","2","3","4",..: 4 3 4 1 4 3 2 2 3 3 ... $ linkedEntitiesByCeoNumList : Factor w/ 2 levels "0","1": 2 2 1 2 1 2 2 1 2 2 ... $ linkedEntitiesByFounderNumList : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ... $ linkedEntitiesChildrenNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ... $ digestGreyList : Factor w/ 8 levels "0","1","2","3",..: 2 3 3 5 2 2 3 5 3 4 ... - attr(*, "na.action")=Class 'omit' Named int [1:1345] 12 14 17 26 29 42 43 49 50 57 ... .. ..- attr(*, "names")=8322456 [1:1345] "12" "14" "17" "26" ... вот реальные данные newdata=read.csv("x.csv") удалите из наборе x.csv переменную Y, я хочу ее предсказать newdata=data.frame(lapply(newdata, factor)) там не должно быть Y Код 'data.frame': 11 obs. of 16 variables: $ sizeList : Factor w/ 4 levels "0","1","2","3": 2 1 2 4 2 4 1 1 4 3 ... $ licensesList : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ... $ gosWinnerNumList : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 2 1 2 ... $ gosWinnerSumList : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 2 1 2 ... $ gosPlacerNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ gosPlacerSumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsInFutureNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsNoViolationsNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ inspectionsHasViolationsFailsList: Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ courtPracticeList : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 1 2 1 2 ... $ digestGreenList : Factor w/ 5 levels "4","5","6","7",..: 1 1 1 3 2 5 4 3 3 3 ... $ linkedEntitiesByCeoNumList : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... $ linkedEntitiesByFounderNumList : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 1 1 ... $ linkedEntitiesChildrenNumList : Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 2 2 2 ... $ digestGreyList : Factor w/ 3 levels "0","1","2": 1 3 2 2 2 2 3 3 2 2 ... все переменные одинаковые у тип у них фактор! Error in predict.randomForest(model, newdata = newdata, type = "class") : Type of predictors in new data do not match that of the training data. Кстати если в наборе х.csv есть переменная Y он дает предсказания. Но смысл, мне нужно на новых данных это сделать, а на них заведомо нет игрика ну так уровни факторов улетели, они могут быть только подмножеством от обучающего датасета Код levels(newdata$digestGreyList) <- levels(df$digestGreyList) или автоматом для совпадающих Код for(n in intersect(names(df), names(newdata))) levels(newdata[,n]) <- levels(df[,n]) ЗЫ а вообще не надо этих групп плодить, все данные вместе должны быть и просто признак принадлежности (тогда и геморроя такого меньше) Сообщение отредактировал p2004r - 4.07.2017 - 20:21 ![]() |
|
![]() |
![]() |
![]() ![]() |