R 优化e1071包中的F分数
我正在尝试使用R中的e1071包实现一类SVM。有人能给我一些关于如何使用网格搜索优化F分数的建议吗 我尝试过tune.svm函数,但它只会导致高灵敏度或高特异性 我试图预测的积极类的百分比在普通人群中约为1-2% 我得到的结果精度很高,但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
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