R 优化e1071包中的F分数

R 优化e1071包中的F分数,r,classification,svm,libsvm,R,Classification,Svm,Libsvm,我正在尝试使用R中的e1071包实现一类SVM。有人能给我一些关于如何使用网格搜索优化F分数的建议吗 我尝试过tune.svm函数,但它只会导致高灵敏度或高特异性 我试图预测的积极类的百分比在普通人群中约为1-2% 我得到的结果精度很高,但F分数很低: Reference Prediction members Not members members 1 4 Not members 12 98

我正在尝试使用R中的e1071包实现一类SVM。有人能给我一些关于如何使用网格搜索优化F分数的建议吗

我尝试过tune.svm函数,但它只会导致高灵敏度或高特异性

我试图预测的积极类的百分比在普通人群中约为1-2%

我得到的结果精度很高,但F分数很低:

             Reference
Prediction    members Not members
  members           1           4
  Not members      12         983

           Accuracy : 0.984           
             95% CI : (0.9741, 0.9908)
No Information Rate : 0.987           
P-Value [Acc > NIR] : 0.83691         

              Kappa : 0.1046          
麦克内马尔试验p值:0.08012

        Sensitivity : 0.07692         
        Specificity : 0.99595 
以下是我的代码片段:

tuned <- tune.svm(fo, data = df, 
                  nu =  0.001:0.5,
                  gamma = 10^(-2:0), 
                  type='one-classification'                 
                  );

model <-     svm(fo, data = df , 
                   nu = tuned$best.parameters$nu, 
                   gamma = tuned$best.parameters$gamma,
                   type='one-classification'
                 );

tuned您可以提供tune.svm方法的tunecontrol参数

它接受类的一个对象

然后需要使用所需参数创建对象。 通过在构建此对象时指定error.fun参数,可以定义要使用的错误函数

错误。乐趣: 函数返回要最小化的错误度量值。它有两个参数:真值向量和预测值向量。如果为空,分类错误用于分类预测,均方误差用于数值预测


因此,放置一个计算F分数的函数应该可以完成这项工作。

我更改了代码,添加了一个计算F分数的函数,并修改了tune函数:tuned抱歉,因为我对堆栈溢出比较陌生,不知道如何将我的全部代码放在这里的注释中。
tuned