Как найти пропущенные значения в дереве регрессии для статуса ветерана - PullRequest
0 голосов
/ 14 февраля 2019

Я не знаю почему, но мне кажется, что мне не хватает узлов, имеющих отношение к статусу ветерана в моем дереве регрессии.Возможно, я что-то упустил?Предложения приветствуются!

    > str(d1)
    'data.frame':   185390 obs. of  5 variables:
     $ Total.Individual.Income   : int  18899 0 15440 10859 25000 20000 8400 
    0 56002 50012 ...
     $ Race                      : Factor w/ 2 levels "Black, American 
    India, Hispanic, Other",..: 2 2 1 1 2 2 2 2 2 2 ...
     $ Sex                       : Factor w/ 2 levels "Female","Male": 1 2 2 1 2 1 1 1 2 1 ...
     $ Veteran                   : Factor w/ 2 levels "No","Yes": 1 1 2 1 1 1 1 1 1 1 ...
     $ Educational.Level.Achieved: Factor w/ 2 levels "Associated Degree and Up",..: 2 2 2 1 2 2 2 2 1 2 ...
    > m1 <- rpart(Total.Individual.Income ~ ., data=d1, method="anova")
    > m1
    n= 185390 

    node), split, n, deviance, yval
          * denotes terminal node

    1) root 185390 6.806020e+14 31892.14  
      2) Educational.Level.Achieved=No Degree 130563 1.891821e+14 17617.89 
    *
      3) Educational.Level.Achieved=Associated Degree and Up 54827 
    4.014663e+14 65884.32  
        6) Sex=Female 29910 1.266138e+14 49292.16 *
        7) Sex=Male 24917 2.567340e+14 85801.30 *

Моя цель с этим кодом состоит в том, чтобы создать дерево регрессии вышеупомянутых предикторов как отношение к общему индивидуальному доходу.

1 Ответ

0 голосов
/ 14 февраля 2019

Обратите внимание, что ни один из них не является race ... это может быть потому, что ни race, ни Veteran не являются переменными, которые действительно полезны при классификации ваших данных на основе искомого результата (Total.Individual.Income).

В любом случае, трудно сказать за отсутствием воспроизводимого примера.

Смотрите результаты по этому вопросу:

require(rpart)
m1 <- rpart(mpg ~ ., data = mtcars)
> m1
n= 32 

node), split, n, deviance, yval
      * denotes terminal node

1) root 32 1126.04700 20.09062  
  2) cyl>=5 21  198.47240 16.64762  
    4) hp>=192.5 7   28.82857 13.41429 *
    5) hp< 192.5 14   59.87214 18.26429 *
  3) cyl< 5 11  203.38550 26.66364 *

Обратите внимание, что только две переменные (cyl и hp) показывать как предикторы, хотя есть 10 переменных, которые могут быть предикторами.Тем не менее, если мы исключим cyl и hp, мы получим совершенно разные результаты:

m2 <- rpart(mpg ~ ., data = mtcars[,c(1, 3, 5:11)])

, тогда результат изменится:

> m2
n= 32 

node), split, n, deviance, yval
      * denotes terminal node

1) root 32 1126.04700 20.09062  
  2) wt>=2.3925 25  320.44640 17.58800  
    4) disp>=266.9 14   85.20000 15.10000 *
    5) disp< 266.9 11   38.28727 20.75455 *
  3) wt< 2.3925 7   89.81429 29.02857 *

, показывая нам теперь вес (wt) и смещение (disp) в качестве предикторов.

Так что с вашим кодом все в порядке, кажется, все, что вам нужно, это лучше понять, что rpart делает под капотом.?rpart может быть хорошим началом.

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