2017-03-26 1 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에게 감사드립니다. 프리젠 테이션을위한 플롯이 필요하므로 제안한 문제가 내 문제를 해결할 것입니다. BTW, 나는 0.3 대신 0.7을 빼야 음모를 올바르게 만들 수있었습니다. 이것이이 플롯 팅 동작을 이해하기위한 새로운 단서를 제공하는지 확실하지 않습니다. 그러나 이것이 R 개발자 중 누군가가 살펴보고 싶은 문제 일 수 있습니다. 도움에 다시 한번 감사드립니다. – oli

관련 문제