지원 벡터 머신 (SVM)을 수행하기 위해 kernlab
R 패키지를 사용하려고합니다. 나의 아주 간단한 예를 들어, 나는 두 가지 훈련 데이터를 가지고있다. A와 BR에서 kernlab의 SVM에 대해 predict()를 사용하는 데 도움이됩니까?
(A 및 B 타입 matrix
로 - 그들은 그래프의 인접 행렬이다.)
> km
[,1] [,2]
[1,] 14.33333 18.47368
[2,] 18.47368 38.96053
지금 내 예측 모델을 생성하는 kernlab
의 ksvm
기능을 사용하십시오. 지금 당장은 제대로 작동하지 않으려 고 노력하고 있습니다. 훈련 오류 등을 걱정하지 않아도됩니다.
그래서 질문 1 : 모델을 올바르게 생성합니까? 알 겠어?
# y are my classes. In this case, A is in class "1" and B is in class "-1"
> y
[1] 1 -1
> model2 = ksvm(km, y, type="C-svc", kernel = "matrix");
> model2
Support Vector Machine object of class "ksvm"
SV type: C-svc (classification)
parameter : cost C = 1
[1] " Kernel matrix used as input."
Number of Support Vectors : 2
Objective Function Value : -0.1224
Training error : 0
지금까지 그렇게 좋았습니다. 커스텀 커널 행렬을 생성 한 다음, 그 행렬을 사용하여 ksvm 모델을 생성했습니다. 우리는 "1"과 "-1"이라고 표시된 교육 데이터를 가지고 있습니다.
지금 예측하는 :> A
[,1] [,2] [,3]
[1,] 0 1 1
[2,] 1 0 1
[3,] 0 0 0
> predict(model2, A)
Error in as.matrix(Z) : object 'Z' not found
어 - 오. 괜찮아. 일종의, 정말로. "예측"은 행렬이 아닌 일종의 벡터를 원합니다.
그래서 몇 가지를 시도 할 수 있습니다 :
> predict(model2, c(1))
Error in as.matrix(Z) : object 'Z' not found
> predict(model2, c(1,1))
Error in as.matrix(Z) : object 'Z' not found
> predict(model2, c(1,1,1))
Error in as.matrix(Z) : object 'Z' not found
> predict(model2, c(1,1,1,1))
Error in as.matrix(Z) : object 'Z' not found
> predict(model2, km)
Error in as.matrix(Z) : object 'Z' not found
위의 테스트 중 일부는 무의미한하지만 그건 내 포인트입니다 : 아무리 내가 뭘, 그냥보고) (예측할 얻을 수없는 내 데이터 및 예측. 스칼라가 작동하지 않으면 벡터가 작동하지 않습니다. 2x2 행렬이 작동하지 않으며 3x3 행렬도 작동하지 않습니다.
내가 뭘 잘못하고 있니?
(나는 다음 내 테스트 데이터가 제정신/합리적인/수학적 사운드 방법으로 해당 형식에 부합 할 수 있는지 확인 할 수 원하는 ksvm 알아낼되면.)
좋아요, 그래서 작성한 코드를 실행했고 작동합니다! 그러나 나는 그것이 무엇을하는지 이해하는 데 약간의 어려움을 겪고있다. K [-noldout, -holdout]의 의미는 무엇입니까? ("-"는 무엇을 의미합니까?) as.kernelMatrix의 인수는 무엇입니까 - 특히 [, SVindex (m), drop = F] 인수 (전체 대괄호가 행렬 색인 인 것처럼 보이기 때문에 특히 이상합니다. K의?) – poundifdef
길었던 이래로, 나는 나의 최초의 지위에서 당신의 설명에 답했다 - 아래 이분의 일을 읽었다. 더 많은 질문이 있으면 언제든지 r-help 목록을 방문하여 더 많은 질문을 할 수 있습니다. 마지막으로, 내 대답이 귀하의 질문에 대한 답이된다면, 그것을 그대로 표기하는 것을 잊지 마십시오 ;-) –
Dude. 너는 너무 많이 흔들어. 고맙습니다! – poundifdef