【发布时间】:2011-12-08 14:39:23
【问题描述】:
我是 R 新手,我正在使用 e1071 包在 R 中进行 SVM 分类。
我使用了以下代码:
data <- loadNumerical()
model <- svm(data[,-ncol(data)], data[,ncol(data)], gamma=10)
print(predict(model, data[c(1:20),-ncol(data)]))
loadNumerical用于加载数据,数据形式为(前8列输入,最后一列分类):
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
1 39 1 -1 43 -1 1 0 0.9050497 0
2 23 -1 -1 30 -1 -1 0 1.6624974 1
3 50 -1 -1 49 1 1 2 1.5571429 0
4 46 -1 1 19 -1 -1 0 1.3523685 0
5 36 1 1 29 -1 1 1 1.3812029 1
6 27 -1 -1 19 1 1 0 1.9403649 0
7 36 -1 -1 25 -1 1 0 2.3360004 0
8 41 1 1 23 1 -1 1 2.4899738 0
9 21 -1 -1 18 1 -1 2 1.2989637 1
10 39 -1 1 21 -1 -1 1 1.6121595 0
数据行数为500。
如上面的代码所示,我测试了前 20 行进行预测。输出是:
1 2 3 4 5 6 7
0.04906014 0.88230392 0.04910760 0.04910719 0.87302217 0.04898187 0.04909523
8 9 10 11 12 13 14
0.04909199 0.87224979 0.04913189 0.04893709 0.87812890 0.04909588 0.04910999
15 16 17 18 19 20
0.89837037 0.04903778 0.04914173 0.04897789 0.87572114 0.87001066
从结果我可以直观地看出,当结果接近0时,表示0类,如果接近1,则表示在1类。
但我的问题是我如何精确地解释结果:是否有一个阈值 s 我可以使用以便低于 s 的值分类为 0 且高于 s 的值分类为 1 ?
如果存在这样的s,我该如何推导出来?
【问题讨论】:
-
将来,让您的示例可重现。 loadNumeric 行没有用,因为它指的是一个神秘的函数。一个好的策略是在一个小示例中使用 dput 并将其粘贴到您的问题中。
-
@IanFellows 感谢您的提示。
标签: r classification svm