使用rpart构建具有分类变量的分类树

时间:2014-11-14 07:19:43

标签: r decision-tree rpart

我有一个包含14个功能的数据集,其中很少有如下所示,其中性别和婚姻状况是分类变量。

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

现在我使用R中的rpart库使用以下

构建分类树
rfit = rpart(homeType ~., data = trainingData, method = "class", cp = 0.0001)

这给了我一个不将性别和婚姻状况视为因素的决策树。

我正在考虑使用as.factor:

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

但我不知道如何将此信息传递给rpart。由于rpart()中的data参数接受“trainingData”数据帧。它将始终采用此数据框中的值。 我对R不熟悉,并希望得到别人的帮助。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:-3)

在实践中,您可以将任何分类值转换为序数值,例如将“婚姻状况”转换为条件1,2,3 ...但是,除非您有一个概念性的定义,否则您通常不应进行转换。任何连续的价值。例如,如果您无法定义什么是1.2 Martital Status,则不应进行转换。相反,有时您可以使用代表值,具体取决于您的研究目标。例如,如果您尝试链接数据以预测家庭类型,则每个婚姻状况的“最低程度的舒适度”是一个序数值,如果(假设)为1.2,则可以解释。