我有一个包含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不熟悉,并希望得到别人的帮助。
答案 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,则可以解释。