代码之家  ›  专栏  ›  技术社区  ›  mariana soffer

使用R和WEKA。如何使用元算法和nfold评估方法?

  •  4
  • mariana soffer  · 技术社区  · 15 年前

    这是我问题的一个例子

    library(RWeka)
    iris <- read.arff("iris.arff")
    

    执行nfold以获得正确的分类器精度。

    m<-J48(class~., data=iris)
    e<-evaluate_Weka_classifier(m,numFolds = 5)
    summary(e)
    

    这里提供的结果是通过用数据集的一部分构建模型,并用另一部分测试得到的,因此提供了精确的精度。

    现在我执行adaboost来优化分类器的参数

    m2 <- AdaBoostM1(class ~. , data = temp ,control = Weka_control(W = list(J48, M = 30)))
    summary(m2)
    

    这里提供的结果是通过使用相同的数据集来构建模型,也可以使用相同的数据集来评估模型,因此,精度并不代表我们使用其他实例来评估模型的实际精度。然而,这个过程有助于优化所建立的模型。

    主要的问题是我不能优化建立的模型,同时用没有用于建立模型的数据对其进行测试,或者只使用nfold验证方法来获得正确的精度。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Joris Meys    15 年前

    m<-J48(Species~., data=iris)
    e<-evaluate_Weka_classifier(m,numFolds = 5)
    summary(m)
    e
    
    
    m2 <- AdaBoostM1(Species ~. , data = iris ,
           control = Weka_control(W = list(J48, M = 30)))
    e2 <- evaluate_Weka_classifier(m2,numFolds = 5)
    summary(m2)
    e2
    

    evaluate_Weka_classifier()

    id <- sample(1:length(iris$Species),length(iris$Species)*0.5)
    m3 <- AdaBoostM1(Species ~. , data = iris[id,] ,
          control = Weka_control(W = list(J48, M=5)))
    
    e3 <- evaluate_Weka_classifier(m3,numFolds = 5)
    # true crossvalidation
    e4 <- evaluate_Weka_classifier(m3,newdata=iris[-id,])
    
    summary(m3)
    e3
    e4
    

    randomForest()

    subset

    推荐文章