R:调整 SVM 参数 - {e1071} 包中的 class.weights

标签 r machine-learning classification svm training-data

我想使用包 {e1071} 训练 svm 分类器。我意识到 class.weight 是我想要调整的参数之一。例如。我想测试两个类权重 c(25, 50) 与 c(20, 55) 我想知道内置调整函数是否可以完成这项工作,如果可以,如何完成?

这是我的训练数据:

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) )

不会给我错误。我用谷歌搜索但似乎找不到正确的方法...任何帮助表示感谢!

最佳答案

ranges 列表是一个命名参数列表,您要调整的参数是 class.weights。我相信你的音域线会是这样的:

ranges=list (class.weights=list(c("1"=25, "2"=20), c("1"=50, "2"=55))

关于R:调整 SVM 参数 - {e1071} 包中的 class.weights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29638117/

相关文章:

python - 将 R 安装的库用于其他程序?

在 R 中 reshape 数据矩阵

r - 仅当子字符串是另一个向量的元素时才用逗号分割字符串

machine-learning - 喀拉斯 : multiclass classification Dense layer

python - Keras 功能 API : fitting and testing model that takes multiple inputs

Keras - 分类器不从预训练模型的转移值中学习

machine-learning - 使用机器学习算法训练 MFCC

r - knitr:如何在不使用 setwd() 的情况下在 knit2html 中设置图形路径?

python - 更改 keras 层的激活函数而不替换整个层

python - 多类多标签分类的每类加权损失