R 决策树预测

R 决策树预测,r,data-mining,decision-tree,predict,R,Data Mining,Decision Tree,Predict,我是R数据挖掘算法的新手,我需要开发一个脚本来帮助我预测事件。 因此,我选择了一个决策树模型来帮助完成这项任务 我的数据集具有以下结构: _____________________________ ATTR1 | ATTR2 | ATTR3 | CLASS Y | N | N | N ______|______|_______ |_______ 以下是我创建的脚本: library(party) myFormula <- CLASS ~ ATTR1 + AT

我是R数据挖掘算法的新手,我需要开发一个脚本来帮助我预测事件。 因此,我选择了一个决策树模型来帮助完成这项任务

我的数据集具有以下结构:

_____________________________
ATTR1 | ATTR2 | ATTR3 | CLASS
  Y   |   N  |   N    |    N
______|______|_______ |_______
以下是我创建的脚本:

library(party)
myFormula <- CLASS ~ ATTR1 + ATTR2 + ATTR3

ind <- sample(2, nrow(myData), replace=TRUE, prob = c(0.7,0.3))
trainData <- myData[ind==1,]
testData <- myData[ind==2,]

energy_ctree <- ctree(myFormula, data=trainData)
testpred <- predict(energy_ctree, newdata= testData)
那么,根据我之前创建的decisionTree模型,预测newDataSet的de类列的步骤是什么呢

提前谢谢


Carlos Lima

如果您有分类数据,并且一些列值出现在测试集中(新数据),但不在训练集中,R会抱怨。例如,如果训练数据中的属性Attr1仅包含如下所示的级别“否”和“是”,则在列Attr1包含“可能”的新数据集上,例如,在R中使用决策树将不可能

    Attr1 ......... ( training set)
     "No"
     "No"
     "No"
     "Yes"
     "Yes"


    Attr1: .......(testing set)
    "Yes"
    "No"
     .
     .
    "maybe"   // R will complain about this value ( it never found it during the training)
一种可能的解决方案是提前指定级别。对于上一个示例,您可以在进行培训之前指定Attr1的级别,如下所示:

    levels(Attr1, c("No","Yes","Maybe")). 

这样,您的训练集就不必包含属性Attr1的值“Maybe”。

即使我遇到了同样的问题。我所做的是,将最终的预处理文件写入csv,并将其再次读取到数据帧,然后将这些测试数据应用到模型上。它非常完美


背后的原因:因为在测试数据框中几乎没有分类值,即使在删除之后,该值仍在列表中,有0行(这在培训数据集中不存在)。

我刚刚遇到了这个问题,下面是我解决这个问题的方法:

1-验证因子变量,它们必须具有相同的水平。 2-验证一个表中的数值变量和第二个表中的整数变量


通过清除这些问题,我的脚本开始顺利运行。

如果您对训练数据中的变量类进行了更改(如将字符转换为因子),则需要在测试数据集中反映相同的内容。我做了这些更改,之后运行顺利。

这意味着其中一个变量是一个因子,当您将数据一分为二时,该因子的一个级别根本没有出现在两个集合中的一个集合中(碰巧)。您需要更仔细地分割数据,以确保所有级别在两组中至少显示一次。感谢您的回复。在我的例子中,训练集和测试具有相同的级别,“我的新数据”(计算类值)也具有相同的结构。我真的不知道如何预测新的数据案例以及如何转换数据集
    levels(Attr1, c("No","Yes","Maybe")).