我用e1071里面的tune进行网格搜索(数据为pima数据集),想得到模型最好的参数:
(1)tobj=tune(svm,X,R,ranges=list(gamma=10^(-6:-3),cost=10^(0.2:2)),
tunecontrol = tune.control(sampling = "cross",cross=10))
然后会得到连个参数的值和最好误差:
- best parameters:
gamma cost
0.001 15.84893
- best performance: 0.1689311
最后,我利用这两个最好的参数,直接在数据集上进行十折交叉验证
(2)mdl2=svm(X,R,type="C-classification",gamma=optg,cost=optc,cross=10)
得到的结果为:
10-fold cross-validation on training data:
Total Accuracy: 77.21354
Single Accuracies:
73.68421 84.41558 71.42857 83.11688 84.41558 75 75.32468 76.62338 70.12987 77.92208
问题是:这两个数据怎么差别怎么大呢?按理说,参数就是按照十折交叉来选的,两个结果不应该一样么?最起码也不能有根本性的差别吧!
真心希望国内R好好发展!大家给看看看。
|