2014-11-14 3 views
4

У меня есть набор данных с 14 функциями, и некоторые из них представлены ниже, где секс и семейное положение являются категориальными переменными.Дерево классификации зданий, имеющее категориальные переменные с использованием rpart

height,sex,maritalStatus,age,edu,homeType 

SEX 
     1. Male 
     2. Female 

MARITAL STATUS 
     1. Married 
     2. Living together, not married 
     3. Divorced or separated 
     4. Widowed 
     5. Single, never married 

Теперь я использую библиотеку rpart из R построить дерево классификации с использованием следующего

rfit = rpart(homeType ~., data = trainingData, method = "class", cp = 0.0001) 

Это дает мне дерево решений, что не считает секс и семейное положение как факторы.

Я имею в виду использование as.factor для этого:

sex = as.factor(trainingData$sex) 
ms = as.factor(trainingData$maritalStatus) 

Но я не уверен, как я передать эту информацию в rpart. Поскольку аргумент данных в rpart() принимает фрейм данных "trainingData". Он всегда будет принимать значения, которые находятся в этом фрейме данных. Я немного новичок в R и буду благодарен за помощь.

ответ

7

Вы можете внести изменения в рамку данных trainingData напрямую, а затем запустить rpart().

trainingData$sex = as.factor(trainingData$sex) 
trainingData$maritalStatus = as.factor(trainingData$maritalStatus) 
rfit = rpart(homeType ~., data = trainingData, method = "class", cp = 0.0001) 
+0

Я пытаюсь применить этот ответ к аналогичному примеру, где моя категориальная переменная - дни недели. Просто, чтобы быть уверенным, что я оставил только эту переменную в наборе тренировок, но когда я пытаюсь обучить классификатор, у модели, по-видимому, есть только один корневой узел, что означает, что я не учитываю эту переменную. Есть ли у вас какие-либо идеи, что может быть проблемой? – LetsPlayYahtzee

+0

См. Http://stackoverflow.com/a/20994978/2140956. –

0

На практике вы можете превратить любое категоричное значение в порядковом значении, например, «Семейное положение» в условиях 1, 2, 3 ... Но, в общем, вы не должны делать преобразование, если у вас нет концептуальное определение любого непрерывного значения. Например, если вы не можете определить, что является статусом 1.2 Martital, вам не следует делать преобразование. Вместо этого иногда вы можете использовать репрезентативное значение, в зависимости от цели вашего исследования. Например, если вы пытаетесь связать свои данные, чтобы предсказать тип дома, «минимальная степень комфорта» каждого семейного статуса является порядковым значением, которое может быть истолковано, если (скажем) 1,2.

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