尝试使用 R 中的 RWeka 包应用决策 C4.5 算法时出错

     2023-03-13     28

关键词:

【中文标题】尝试使用 R 中的 RWeka 包应用决策 C4.5 算法时出错【英文标题】:Error trying to apply Decision C4.5 algorithm using the RWeka package in R 【发布时间】:2018-10-22 17:18:30 【问题描述】:

我正在尝试将决策树 C 4.5 算法与 10 - 折叠交叉验证一起用于 Web 垃圾邮件检测。我的数据集在进行特征选择后基本上有 8944 个观察值和 36 个变量。

这是我的代码:

#dividing the dataset into train and test
trainRowNumbers<-createDataPartition(final1$spam,p=0.7,list=FALSE)
#Create the training dataset
trainData<-final1[trainRowNumbers,]
#Create Test data
testData<-final1[-trainRowNumbers,]

#C4.5 using 10 fold cross validation
set.seed(1958)
train_control<-createFolds(trainData$spam,k=10)
C45Fit<-train(spam~.,method="J48",data=trainData,
              tuneLength=15,
              trControl=trainControl(
               method="cv",indexOut = train_control ))

这是我得到的错误:

C45Fit<-train(spam~.,method="J48",data=trainData,
               tuneLength=15,
               trControl=trainControl(
               method="cv",indexOut = train_control ))

火车错误(垃圾邮件 ~ ., method = "J48", data = trainData, tuneLength = 15, : 未使用的参数(method = "J48",data = trainData,tuneLength = 15,trControl = trainControl(method = "cv",indexOut = train_control))

我有几个问题:

    如何解决此错误?

    如何设置tuneLength参数?

我的数据集负责人:

> head(trainData)
  hostid                           host      HST_4     HST_6     HST_7     HST_8     HST_9    HST_10     HST_16
1      0         007cleaningagent.co.uk 0.03370787 1.9791304 0.1123596 0.1516854 0.2247191 0.2977528 0.07865169
2      1           0800.loan-line.co.uk 1.39539347 2.4222020 0.2284069 0.2610365 0.3531670 0.4529750 0.02879079
4      3 102belfast.boys-brigade.org.uk 0.29729730 1.1800000 0.2162162 0.3783784 0.5135135 0.5405405 0.21621622
5      4  10bristol.boys-brigade.org.uk 0.28804348 1.7745267 0.1141304 0.1847826 0.2608696 0.3750000 0.08152174
6      5  10enfield.boys-brigade.org.uk 0.00000000 0.8468468 0.0625000 0.1875000 0.1875000 0.3125000 0.06250000
8      8             13thcoventry.co.uk 0.05797101 2.1113074 0.2318841 0.3091787 0.3961353 0.5507246 0.09178744
      HST_17    HST_18 HST_20    HMG_29     HMG_40     HMG_41    HMG_42    AVG_50    AVG_51     AVG_55    AVG_57
1 0.15730337 0.2247191  0.070 0.2907760 0.02702703 0.07207207 0.1351351  32431.65  7.215054 0.02289305 0.2980171
2 0.05566219 0.1094050  0.075 0.0495162 0.10641628 0.17840376 0.2410016 150592.89  2.000000 0.49661240 0.1137439
4 0.37837838 0.4054054  0.040 0.2156130 0.03971119 0.11552347 0.1480144  16129.61  2.125000 0.12297815 0.2033877
5 0.13043478 0.2119565  0.075 0.0405612 0.08152174 0.13043478 0.2119565  28759.75  2.870968 0.19622331 0.0673372
6 0.18750000 0.2500000  0.005 0.1125400 0.02528090 0.12359551 0.1432584  70966.61  2.000000 0.03948338 0.2513755
8 0.14975845 0.2512077  0.095 0.1946150 0.04382470 0.10458167 0.1633466 109388.89 11.484940 0.03547817 0.1387366
       AVG_58   AVG_59     AVG_61     AVG_63    AVG_65    AVG_67     STD_77     STD_79       STD_80     STD_81
1 0.030079101 1.888686 0.04982536 0.07119317 0.1539772 0.2237475 0.02240051 0.04634758 0.0003248904 0.07644575
2 0.005874481 2.423238 0.14016213 0.17484142 0.2460647 0.3279534 0.03014901 0.05352347 0.0006170884 0.09449420
4 0.017285860 1.657795 0.08748573 0.14192639 0.2273218 0.2815660 0.03715705 0.07385004 0.0021174754 0.15725521
5 0.007008439 1.656472 0.10088409 0.17370255 0.2791502 0.3839271 0.03382564 0.07695898 0.0011314215 0.14290420
6 0.017145414 2.284363 0.09245673 0.14045514 0.2267635 0.2907555 0.02459505 0.06418522 0.0007756064 0.16533374
8 0.001818059 2.300361 0.17326186 0.25910768 0.3351511 0.4479340 0.05611160 0.07531329 0.0005475770 0.15796253
     STD_83      STD_84     STD_85     STD_87    STD_94   spam
1 0.1219990 0.001009964 0.04043011 0.04198925 0.3400028 normal
2 0.1539489 0.001734261 0.15000000 0.16000000 0.3147682 normal
4 0.2027374 0.006655953 0.06437500 0.06031250 0.7100778 normal
5 0.1925378 0.002708827 0.04258065 0.05290323 0.8195509 normal
6 0.2223814 0.005491305 0.09125000 0.08062500 1.2953592 normal
8 0.2366591 0.002588343 0.21698795 0.14774096 0.2882247 normal

sessionInfo() 的输出

> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252    LC_MONETARY=English_Australia.1252
[4] LC_NUMERIC=C                       LC_TIME=English_Australia.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] bindrcpp_0.2        ggthemes_3.5.0      randomForest_4.6-12 Metrics_0.1.3       RWeka_0.4-37        mlr_2.12.1         
 [7] ParamHelpers_1.10   rgeos_0.3-26        VIM_4.7.0           data.table_1.10.4-3 colorspace_1.3-2    mice_2.46.0        
[13] RANN_2.5.1          kernlab_0.9-25      mlbench_2.1-1       caret_6.0-79        ggplot2_2.2.1       lattice_0.20-35    
[19] dplyr_0.7.4        

loaded via a namespace (and not attached):
 [1] nlme_3.1-131       lubridate_1.7.3    bit64_0.9-7        dimRed_0.1.0       httr_1.3.1         backports_1.1.2    tools_3.4.0       
 [8] R6_2.2.2           rpart_4.1-11       DBI_0.8            lazyeval_0.2.1     nnet_7.3-12        withr_2.1.0        sp_1.2-7          
[15] tidyselect_0.2.3   mnormt_1.5-5       parallelMap_1.3    bit_1.1-12         curl_3.0           compiler_3.4.0     checkmate_1.8.5   
[22] scales_0.5.0       sfsmisc_1.1-1      DEoptimR_1.0-8     lmtest_0.9-35      psych_1.7.8        robustbase_0.92-8  stringr_1.2.0     
[29] foreign_0.8-67     rio_0.5.10         pkgconfig_2.0.1    RWekajars_3.9.2-1  rlang_0.2.0        readxl_1.0.0       ddalpha_1.3.1     
[36] BBmisc_1.11        bindr_0.1          zoo_1.8-0          ModelMetrics_1.1.0 car_3.0-0          magrittr_1.5       Matrix_1.2-12     
[43] Rcpp_0.12.14       munsell_0.4.3      abind_1.4-5        stringi_1.1.6      carData_3.0-1      MASS_7.3-47        plyr_1.8.4        
[50] recipes_0.1.1      parallel_3.4.0     forcats_0.3.0      haven_1.1.1        splines_3.4.0      pillar_1.2.1       boot_1.3-19       
[57] rjson_0.2.15       reshape2_1.4.2     codetools_0.2-15   stats4_3.4.0       CVST_0.2-1         glue_1.2.0         laeken_0.4.6      
[64] vcd_1.4-4          foreach_1.4.3      twitteR_1.1.9      cellranger_1.1.0   gtable_0.2.0       purrr_0.2.4        tidyr_0.7.2       
[71] assertthat_0.2.0   DRR_0.0.2          gower_0.1.2        openxlsx_4.0.17    prodlim_1.6.1      broom_0.4.3        e1071_1.6-8       
[78] class_7.3-14       survival_2.41-3    timeDate_3042.101  RcppRoll_0.2.2     tibble_1.4.2       rJava_0.9-9        iterators_1.0.8   
[85] lava_1.5.1         ipred_0.9-6       

感谢您提前提供的任何建议。

【问题讨论】:

您的示例中的错误不可复制;当我在您的代码中使用 iris 数据集时,它工作得非常好。你能提供一个可复制的例子吗?另外,你能分享sessionInfo()的输出吗? 嘿!我附上了一张我的数据集的照片,我还附上了你要求我做的 sessionInfo() 的输出。 Excel 屏幕截图实际上并没有帮助。一个可复制的例子是使用每个人都有的数据集,例如R 附带的iris 数据集。参见***.com/questions/5963269/…。 对不起。再次编辑它:) 好一点,但仍然没有真正的帮助。可复制的示例意味着任何人都可以复制和粘贴代码并在自己的计算机上运行它,并获得与您相同的输出。请参阅下面的答案。 【参考方案1】:

我可以通过以下方式复制错误消息:

library(RWeka)
library(caret)
library(mlr)
# Loading required package: ParamHelpers

# Attaching package: ‘mlr’

# The following object is masked from ‘package:caret’:

#     train
#dividing the dataset into train and test
trainRowNumbers <- createDataPartition(iris$Species, p = 0.7, list = FALSE)

#Create the training dataset
trainData <- iris[trainRowNumbers, ]
#Create Test data
testData <- iris[-trainRowNumbers, ]

#C4.5 using 10 fold cross validation
set.seed(1958)
train_control <- createFolds(trainData$Species, k = 10)
C45Fit <- train(Species~., method = "J48",data = trainData,
              tuneLength = 15,
              trControl = trainControl(
               method = "cv",indexOut = train_control ))
# Error in train(Species ~ ., method = "J48", data = trainData, tuneLength = 15,  : 
#   unused arguments (method = "J48", data = trainData, tuneLength = 15, trControl = trainControl(method = "cv", indexOut = train_control))

注意消息The following object is masked from ‘package:caret’: train。如果您在加载 caret 之后加载另一个具有 train 函数的包(例如,在这种情况下为 mlr),默认情况下,R 将使用最近加载的包中的 train。 (这就是为什么我要求sessionInfo(),以查看已加载哪些包。出于同样的原因,可复制的示例应该包括您加载的包。)R 运行train 而不是来自carettrain来自mlr(或您加载的其他一些包),它会返回错误消息。

解决方案是最后加载caret,或者使用caret::train(...)caret 显式调用train 函数。

【讨论】:

非常感谢。这有效.. C45Fit

Tidymodel 包:R 中的通用线性模型 (glm) 和决策树(袋装树、提升树和随机森林)模型

...【发布时间】:2021-03-0115:51:54【问题描述】:问题我正在尝试使用R中的Tidymodels包进行分析。 查看详情

如何使用rpart或party包过滤R中决策树中的自变量

】如何使用rpart或party包过滤R中决策树中的自变量【英文标题】:Howtofilterindependentvariablesindecision-treeinRwithrpartorpartypackage【发布时间】:2018-07-0414:17:55【问题描述】:我是一名SAS用户,目前正在研究如何使用R-package制作决策树。... 查看详情

r语言应用实战-基于r的c4.5算法和c5.0算法原理解析及应用案例

...言决策树方法在分类,预测,规则提取等领域有着广泛的应用。决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶结点对应着属性上的划分,根据样本在该属性上的不同取值将其划分若干个子集。对于非纯结点,... 查看详情

R Weka J48决策树无法处理数字类

...ublication.org/admin/vol_issue1/upload%20Image/IJETR032129.pdf它在第4页使用RWeka包和R中的J48函数构建决策树。在 查看详情

r语言专题,如何使用party包构建决策树?

下面将在iris数据集上,演示如何使用party包中的函数ctree来建立一棵决策树。iris数据集中的Sepal.Length、Sepal.Width、Petal.Length和Petal.Width,都将用来预测鸢尾花的种类。party包中的函数ctree用来建立决策树,函数predict用来对新数据进... 查看详情

C4.5 决策树:分类概率分布?

...确定分类概率分布吗?我知道使用朴素贝叶斯,每次分类尝试都会产生一个分类分布。如果可以使用决策树,WekaJ48树是否提供此功能? 查看详情

如何处理“rpart”中的连续和离散变量 - 使用 R 的决策树?

】如何处理“rpart”中的连续和离散变量-使用R的决策树?【英文标题】:Howtohandlecontinuousanddiscretevariablesin\'rpart\'-decisiontreesusingR?【发布时间】:2013-02-2606:01:05【问题描述】:我正在使用R中的rpart包创建一些决策树。我的数据集... 查看详情

基于r语言的用户分析

...4.5应用于大数据集上的分类算法,主要在执行效率和内存使用方面进行了改进。C4.5算法是ID3算法的修订版,采用GainRatio来加以改进方法,选取有最大GainRatio的分割变量作为准则 查看详情

ctree 在 R 中的派对包中绘制决策树,终端节点出现一些奇怪的数字 - 问题?

...遇到了一些非常奇怪的东西..我不知道为什么..我在下面使用相同的代码:library(party)r_tree<-ctr 查看详情

使用 R 和 Rweka 在 termdocument 矩阵中使用 bigrams 而不是单个单词

】使用R和Rweka在termdocument矩阵中使用bigrams而不是单个单词【英文标题】:bigramsinsteadofsinglewordsintermdocumentmatrixusingRandRweka【发布时间】:2013-07-1605:28:48【问题描述】:我找到了一种在术语文档矩阵中使用二元组而不是单个标记的... 查看详情

决策树方包预测错误 - 级别不匹配

...:我正在使用派对包在R中构建CART回归树模型,但是当我尝试将模型与测试数据集应用时,我收到错误消息说级别不匹配。过去一周我一直在阅读论坛上的帖子,但仍然找不到解决问题的正确方法。所以我在这里使用我编造的假... 查看详情

如何改进决策树回归器中的负 R 平方

...描述】:我试图应用一些回归量来预测IMDB评级。这是我尝试过的:importpandasaspdimportnumpyasnpfromsklearn.preprocessingimportMinMaxScalerfromsklearn. 查看详情

R中的J48树 - 训练和测试分类

...:2016-09-0218:08:12【问题描述】:我想在R上的J48决策树中使用训练和测试。这是我的代码:library("RWeka")data<-read.csv("try.csv")resultJ48<-J48(classificationTry~.,data)summary(resul 查看详情

J48 树 (RWeka) 中的属性及其值

】J48树(RWeka)中的属性及其值【英文标题】:PropertiesandtheirvaluesoutofJ48tree(RWeka)【发布时间】:2015-11-1701:21:29【问题描述】:如果您运行以下命令:library(RWeka)data(iris)res=J48(Species~.,data=iris)res将是类J48的列表,继承自Weka_tree。如果你... 查看详情

将随机森林变成决策树 - 在 R 中使用 randomForest 包

】将随机森林变成决策树-在R中使用randomForest包【英文标题】:TurningaRandomForestintoaDecisionTree-UsingrandomForestpackageinR【发布时间】:2014-06-1423:48:48【问题描述】:是否可以生成树完全相同的决策森林?请注意,这是一个实验性问题... 查看详情

决策树(例如 C4.5)是不是被视为非参数学习?

...1-3012:21:09【问题描述】:我对机器学习比较陌生,我正在尝试将决策树归纳纳入事物的宏伟计划中。决策树(例如,使用C4.5或ID3构建的决策树)是否被视为参数或非参数?我猜想它们可能确 查看详情

如何在 r studio 中缩小决策树图?

...屏幕截图中。树的节点是重叠的,所以我看不到它们。我尝试了显示它们的缩放选项,但它只是放大。你能建议我如何缩小以便我可以清楚地看到所有节点吗?【问题讨论】:欢迎来到***。请参阅howtoasa 查看详情

如何在 R 编程中指定决策树中的拆分?

...mming?【发布时间】:2016-10-0405:35:29【问题描述】:我正在尝试在这里应用决策树。决策树负责在每个节点本身进行拆分。但是在第一个节点我想根据“年龄”分割我的树。我该如何强制呢?library(party)fit2<-ctree(Churn~Gender+Age+LastT... 查看详情