r - 如何绘制 SVM 分类超平面

标签 r machine-learning svm libsvm

这是我的 SVM 分类示例代码。

    train <- read.csv("traindata.csv")
    test <- read.csv("testdata.csv")

    svm.fit=svm(as.factor(value)~ ., data=train, kernel="linear", method="class")

    svm.pred = predict(svm.fit,test,type="class")

我的示例中的特征是一个给出两个级别(真或假)的因素。我想要 绘制我的 svm 分类器的图表,并将它们分为两组。一组 一组为“真”,另一组为假。我们如何生成 3D2D SVM 图?我尝试使用 plot(svm.fit, train) 但它似乎不适合我。 我在 SO 上找到了这个答案,但我不清楚 tx、y、zw 是什么cl 在答案中。

Plotting data from an svm fit - hyperplane

我的数据集中有大约 50 个特征,其中最后一列是一个因素。任何简单的方法,或者是否有人可以帮助我解释他的答案。

最佳答案

简短的回答是:你不能。您的数据是 50 维的。您无法绘制 50 个维度。你唯一能做的就是一些粗略的近似、还原和预测,但这些都不能真正代表内部发生的事情。为了绘制 2D/3D 决策边界,您的数据必须是 2D/3D(2 或 3 个特征,这正是所提供的链接中发生的情况 - 它们只有 3 个特征,因此可以绘制所有特征)。对于 50 个功能,您只能进行统计分析,无需实际的目视检查。

您显然可以查看一些切片(选择 3 个特征,或 PCA 投影的主要组成部分)。如果您不熟悉底层线性代数,您可以简单地使用 gmum.r package它会为你做这件事。只需训练 svm 并绘制它即可强制“pca”可视化,如下所示:http://r.gmum.net/samples/svm.basic.html

library(gmum.r)

# We will perform basic classification on breast cancer dataset 
# using LIBSVM with linear kernel
data(svm_breast_cancer_dataset)

# We can pass either formula or explicitly X and Y
svm <- SVM(X1 ~ ., svm.breastcancer.dataset, core="libsvm", kernel="linear", C=10)
## optimization finished, #iter = 8980
pred <- predict(svm, svm.breastcancer.dataset[,-1])

plot(svm, mode="pca")

这给出了

SVM visualization

更多示例可以引用项目网站http://r.gmum.net/

但是,这仅显示点投影及其分类 - 您无法看到超平面,因为它是高维对象(在您的情况下为 49 维),并且在这种投影中,该超平面将是...整个屏幕。完全没有像素会被留在“外部”(从这个角度考虑 - 如果你有 3D 空间和超平面在里面,这将是 2D 平面..现在如果你尝试以 1D 绘制它,你最终会得到整条线用你的超平面“填充”,因为无论你在 3D 中的什么位置放置一条线,2D 平面在这条线上的投影都会将其填满!唯一的其他可能性是该线是垂直的,然后投影是一个点;这同样适用于这里 - 如果您尝试将 49 维超平面投影到 3D 上,您最终会得到整个屏幕“黑色”)。

关于r - 如何绘制 SVM 分类超平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341381/

相关文章:

machine-learning - 使用 LIBSVM grid.py 处理不平衡数据?

r - 使用 Dockerfile 安装 R 包

从标准输入读取字符

machine-learning - 预测 SMO 中的标称值

matplotlib - 从线性 SVM 绘制 3D 决策边界

machine-learning - 具有多个损失层的 Caffe

r - 编写 R 包 : needing a package I don't explicitly call

r - 使用 r 将两个变量的值组合在一起以创建一个新变量

python - 处理大数据集进行图像分类

artificial-intelligence - 选择正确的神经网络类型