gpt4 book ai didi

r - 如何使用 e1071 计算数据点到 svm 创建的决策超平面的距离

转载 作者:行者123 更新时间:2023-11-30 09:09:37 25 4
gpt4 key购买 nike

我使用 e1071 包创建了一个预测 2 个类别的线性模型。我现在能够预测类别,但我还想知道每个预测到决策超平面的距离。

此代码对虹膜数据进行子集化,创建训练集和预测集:

# The data should have 2 factors, such that there is only 1 hyperplane
iris.subset <- subset(iris, iris$Species %in% c("versicolor", "virginica"))
iris.subset$Species <- as.factor(as.character(iris.subset$Species))
# Random sampling for training data
training.data <- iris.subset[sample(1:nrow(iris.subset), 50, replace=FALSE),]
# Remaining samples make up the prediction data
prediction.data <- iris.subset[!(rownames(iris.subset) %in% rownames(training.data)),]

此代码适合模型:

require(e1071)
svmfit <- svm(Species~., data=training.data, kernel="linear")

从预测集中预测 5 个样本:

predict(svmfit, prediction.data[sample(1:nrow(prediction.data), 5, replace=FALSE),])

这给了我类(class)。现在,我想计算这些点到超平面的距离。我该怎么做?

Here是一个未解答的同类问题,但在 Matlab 中。 Here是另一个可能有帮助的页面,但同样是在 Matlab 中。

最佳答案

您可以从预测中获取决策值

dd <- prediction.data[sample(1:nrow(prediction.data), 5, replace=FALSE),]
pred <- predict(svmfit, dd, decision.value=T)
pred
# 112 139 87 108 70
# virginica virginica versicolor virginica versicolor
# attr(,"decision.values")
# virginica/versicolor
# 112 1.9830355
# 139 0.4160704
# 87 -1.2680673
# 108 2.7181950
# 70 -2.6954507

这些值在属性中返回。您可以使用更直接地访问数据

attr(pred, "decision.values")

它返回一个值矩阵。

有关更多信息,您可以阅读 ?predict.svm 的帮助页面

关于r - 如何使用 e1071 计算数据点到 svm 创建的决策超平面的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43080271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com