R的训练算法有什么限制吗?

R的训练算法有什么限制吗?,r,memory-management,machine-learning,classification,r-caret,R,Memory Management,Machine Learning,Classification,R Caret,我正在使用R(RStudio版本0.98.1017)来训练一个使用朴素贝叶斯算法的二进制分类器,并进行5倍交叉验证。以下是我正在使用的代码: library(caret) dataset <- read.table("dataFile.csv", header=TRUE, sep = ",") attributes = dataset[,-3] labels = as.factor(dataset$Class) model = train(attributes, labels, metho

我正在使用R(RStudio版本0.98.1017)来训练一个使用朴素贝叶斯算法的二进制分类器,并进行5倍交叉验证。以下是我正在使用的代码:

library(caret)
dataset <- read.table("dataFile.csv", header=TRUE, sep = ",")
attributes = dataset[,-3]
labels = as.factor(dataset$Class)
model = train(attributes, labels, method='nb', trControl=trainControl(method='repeatedcv', number=5))
confusionMatrixResults<-table(predict(model$finalModel,attributes)$class,labels)
confusionMatrix(confusionMatrixResults)
如果文件包含2001行(1个标题和2000条记录),并且生成以下混淆矩阵和结果,则代码工作正常:

        labels
      0   1
  0 991   2
  1  17 990

               Accuracy : 0.9905          
                 95% CI : (0.9852, 0.9943)
    No Information Rate : 0.504           
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.981           
 Mcnemar's Test P-Value : 0.001319        

            Sensitivity : 0.9831          
            Specificity : 0.9980          
         Pos Pred Value : 0.9980          
         Neg Pred Value : 0.9831          
             Prevalence : 0.5040          
         Detection Rate : 0.4955          
   Detection Prevalence : 0.4965          
      Balanced Accuracy : 0.9906          

       'Positive' Class : 0
标签
0   1
0 991   2
1  17 990
准确度:0.9905
95%可信区间:(0.9852,0.9943)
无信息率:0.504
P值[Acc>NIR]:<2.2e-16
卡帕值:0.981
麦克内马尔试验P值:0.001319
灵敏度:0.9831
特异性:0.9980
位置预测值:0.9980
负预测值:0.9831
患病率:0.5040
破案率:0.4955
检出率:0.4965
平衡精度:0.9906
“正”类:0
但是,如果我只添加一行额外的代码,它将生成非常糟糕的结果(尽管没有错误或警告):

标签
0   1
0 596  78
1 413 914
准确度:0.7546
95%可信区间:(0.7352,0.7733)
无信息率:0.5042
P值[Acc>NIR]:<2.2e-16
卡帕:0.5106
Mcnemar试验P值:<2.2e-16
灵敏度:0.5907
特异性:0.9214
位置预测值:0.8843
负预测值:0.6888
患病率:0.5042
破案率:0.2979
检出率:0.3368
平衡精度:0.7560
“正”类:0
我的问题是:一个额外的记录怎么可能导致如此不同的结果。 值得一提的是,我用不同的记录尝试了两个随机测试,在所有这些测试中,问题与特定的记录无关,并且在文件有超过2001行时发生

我的猜测是,在内存大小或NaiveBayes库方面肯定存在一些限制

如果您想尝试,下面是该文件(我重命名了属性以保密):
删除最后一行将显著改善结果

额外的那一行是什么?这极不可能与内存有关。它与我当前列出的一行完全相同。名、姓和0/1。我做了两个测试,随机排列了几行。当线数超过2001时,问题总是出现!你能链接到完整的文件,以便我们可以核实你看到的吗?我真的想这样做,但不幸的是,公司的政策是考虑这个名字的名字和姓氏保密,因为他们是病人的名字。几乎可以肯定的是,你做错了什么。包括您正在使用的全部代码和最少的数据工作示例。事实上,您对这些数据的第一个结果(acc超过90%)几乎是不可能的,除非您的数据非常冗余(您有多个完全相同的行)
        labels
      0   1
  0 991   2
  1  17 990

               Accuracy : 0.9905          
                 95% CI : (0.9852, 0.9943)
    No Information Rate : 0.504           
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.981           
 Mcnemar's Test P-Value : 0.001319        

            Sensitivity : 0.9831          
            Specificity : 0.9980          
         Pos Pred Value : 0.9980          
         Neg Pred Value : 0.9831          
             Prevalence : 0.5040          
         Detection Rate : 0.4955          
   Detection Prevalence : 0.4965          
      Balanced Accuracy : 0.9906          

       'Positive' Class : 0
  labels
      0   1
  0 596  78
  1 413 914

               Accuracy : 0.7546          
                 95% CI : (0.7352, 0.7733)
    No Information Rate : 0.5042          
    P-Value [Acc > NIR] : < 2.2e-16       

                  Kappa : 0.5106          
 Mcnemar's Test P-Value : < 2.2e-16       

            Sensitivity : 0.5907          
            Specificity : 0.9214          
         Pos Pred Value : 0.8843          
         Neg Pred Value : 0.6888          
             Prevalence : 0.5042          
         Detection Rate : 0.2979          
   Detection Prevalence : 0.3368          
      Balanced Accuracy : 0.7560          

       'Positive' Class : 0