如何将测试数据绘制成R包e1071的svm.plot?

时间:2017-03-26 10:44:24

标签: r plot svm test-data

我使用R包e1071和虹膜数据集构建了一个SVM模型。我将虹膜数据分成训练和测试数据,并根据训练数据构建S​​VM。现在,我想将测试数据绘制到使用points函数显示训练数据和SVM边界的相同图中。但是,当我这样做时,相当多的测试数据点最终会出现在绘图右侧的外部,考虑到绘图比例和测试数据的实际值,这是不可能的。这是我使用的代码:

# Import e1071 package and iris data set
library(e1071)
data("iris")

# Split the data into training and test data
index <- c(1:35, 51:85, 101:135)
iris_training <- iris[index, ]
iris_test <- iris[-index, ]

# Compute SVM model with linear kernel
svm_model <- svm(Species ~ Petal.Length + Petal.Width, 
                 data=iris_training,
                 kernel='linear')

# Plot the data and decision boundaries
plot(svm_model, 
     data = iris_training[ , c(3, 4, 5)],
     xlim = c(0.05, 2.55),
     ylim = c(0.9, 7), 
     svSymbol = 1, 
     dataSymbol = 1, 
     symbolPalette = c("black", "blue", "red"))

# Plot the test data into the same plot
points(iris_test$Petal.Width, 
       iris_test$Petal.Length,
       pch="x")

任何想法如何解决这个或如何解决这个问题?非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,所以这种东西就在我的巷子里,但我一直在寻找这种方式,没有什么可以解释的。但是,我想出了一种方法,如果那就是你需要的那样,可能会让人看到正确的数字。 (仍然没有解释为什么会发生这种错误。)我做了:iris_test$Petal.Width[31:45] <- iris_test$Petal.Width[31:45] - 0.3 并绘制。它可以为您提供所需的数字。我真的不确定为什么这是必要的。我调整了我能想到的一切,什么都没有。