2017-03-26 8 views
0

私は、Rパッケージe1071とアイリスデータセットを使ってSVMモデルを構築しました。虹彩データをトレーニングデータとテストデータに分割し、トレーニングデータからSVMを構築しました。ここで、points関数を使用してトレーニングデータとSVM境界を示す同じプロットにテストデータをプロットしたいと思います。しかし、私がこれを行うと、かなりの数のテストデータポイントがプロットの右側の外側になります。これは、プロットのスケールとテストデータの実際の値を考慮する必要がありません。ここで私が使用したコードは次のとおりです。Rパッケージe1071のsvm.plotにテストデータをプロットするには?

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

任意のアイデアは、この問題を解決する方法またはこの問題を回避する方法?ヘルプは非常に感謝します。

答えて

0

だから、この種のものは私の路地のすぐ上にありますが、私は可能な限りあらゆる方法でこれを見てきました。しかし、私は多分それがあなたが必要とする場合は正しい数字を見て取得する方法を考え出した。 (まだこのエラーが起こっている理由は説明されていません)。私はした:iris_test$Petal.Width[31:45] <- iris_test$Petal.Width[31:45] - 0.3 とプロット。そしてそれはあなたに必要な人物を得ます。なぜこれが必要なのか本当に分かりません。私は考えることができ、何も得られなかったすべてを調整しました。

+1

ありがとう@jwells。私はプレゼンテーションのプロットが必要なので、提案した修正が私の問題を解決します。ところで、私は0.3の代わりに0.7を引いて、プロットを正しく見せる必要がありました。このプロットの動作を理解するための新しい手掛かりが得られるかどうかは不明です。しかし、これはR開発者の誰かが見たいと思うかもしれない問題であるようです。助けてくれてありがとう。 – oli

関連する問題