R:调整 SVM 参数 - e1071 包中的 class.weights
Posted
技术标签:
【中文标题】R:调整 SVM 参数 - e1071 包中的 class.weights【英文标题】:R: Tuning SVM parameter - class.weights in e1071 packageR:调整 SVM 参数 - e1071 包中的 class.weights 【发布时间】:2015-06-20 16:46:45 【问题描述】:我想用包 e1071 训练一个支持向量机分类器。我意识到 class.weight 是我想要调整的参数之一。例如。我想测试两个类权重 c(25, 50) 与 c(20, 55) 我想知道内置的 tune 函数是否可以完成这项工作,如果可以,如何?
这是我的训练数据:
training.data =
height0 height1 height2 weight0 weight1 gender class
1 0 1 0 1 0 1 1
2 0 1 0 0 1 0 1
3 0 1 0 0 0 1 1
4 1 0 0 1 0 0 1
5 0 1 0 0 1 0 2
6 0 1 0 0 1 0 2
并且响应变量'class'中有2个级别
training.data$class =
[1] 1 1 1 1 2 2
Levels: 1 2
我想用这样的功能,
param.obj <- tune(svm, class ~., data = training.data,
ranges = list("1" = c(25, 20), "2" = c(50,55) ),
tunecontrol = tune.control(sampling = "cross", cross = 5) )
但我认为这不是正确的做法,因为如果我将“2”更改为“3”,它仍然有效。
param.obj <- tune(svm, class ~., data = training.data,
ranges = list("1" = c(25, 20), "3" = c(50,55) ),
tunecontrol = tune.control(sampling = "cross", cross = 5) )
不会给我一个错误。我在 Google 上四处搜索,但似乎找不到正确的方法...感谢任何帮助!
【问题讨论】:
【参考方案1】:ranges
列表是一个命名的参数列表,您要调整的参数是class.weights
。我相信你在曲调中的范围线会是这样的:
ranges=list (class.weights=list(c("1"=25, "2"=20), c("1"=50, "2"=55))
【讨论】:
没错。谢谢! (更像ranges=list (class.weights=list(c("1"=25, "2"=50), c("1"=20, "2"=55))
,但它绝对是我要找的东西!)以上是关于R:调整 SVM 参数 - e1071 包中的 class.weights的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用e1071包中的svm函数构建支持向量机SVM模型使用tune.svm函数基于网格搜索(10折交叉验证)对RBF核函数的gamma参数和cost参数进行参数寻优使用最优参数构建最终模型
R:在 e1071 包中是不是有比 libsvm 替代的 SVM 实现? [关闭]
R语言使用e1071包中的svm函数构建支持向量机SVM模型(Support vector machines)默认使用RBF核函数使用table函数计算混淆矩阵评估分类模型性能
R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现