使用rpart构建分类树并处理分类变量

8

我有一个数据集,其中包含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()中的数据参数需要“trainingData”数据框。它将始终采用该数据框中的值。 我对R有点陌生,希望有人能帮助我。

2个回答

11
你可以直接更改 trainingData 数据框并运行 rpart()
trainingData$sex = as.factor(trainingData$sex)
trainingData$maritalStatus = as.factor(trainingData$maritalStatus)
rfit = rpart(homeType ~., data = trainingData, method = "class", cp = 0.0001)

我正在尝试将那个答案应用到一个类似的例子中,其中我的分类变量是一周中的日期。为了确保,我只在训练集中留下了该变量,但是当我尝试训练分类器时,模型似乎只有一个根节点,这意味着它没有考虑该变量。你有任何想法是什么问题吗? - LetsPlayYahtzee

-4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接