2016-05-18 10 views
1

私はkernlabパッケージを使用していて、ksvm/predictのカーソルを事前に計算して機能させていました。あらかじめ計算したカーネルでkernlabパッケージを使用したときのエラー

私が持っているエラーメッセージは次のとおりです。私は、エラーの場所のためのソースコードを見て発見した

> ksvm.mod <- ksvm(trainingset.outer, traininglabels.outer, kernel = "matrix",type="C-svc", C = 60, prob.model = TRUE) 
> temp <- predict(ksvm.mod, test.kernel.outer) 
Error in .local(object, ...) : test vector does not match model ! 

それはしかし、列

newnrows <- nrow(newdata) 
newncols <- ncol(newdata) 
if(!is(newdata,"kernelMatrix") && !is.null(xmatrix(object))){ 
    if(is(xmatrix(object),"list") && is(xmatrix(object)[[1]],"matrix")) oldco <- ncol(xmatrix(object)[[1]]) 
    if(is(xmatrix(object),"matrix")) oldco <- ncol(xmatrix(object)) 
    if (oldco != newncols) stop ("test vector does not match model !") 
} 

の違いによるものであることを、私が使ったオブジェクトには同じ列があります

> ncol(trainingset.outer) 
[1] 1498 
> ncol(test.kernel.outer) 
[1] 1498 

次に、モデルごとに保存され、以下のを発見したlumns:

> ncol(xmatrix(ksvm.mod)[[1]]) 
Error in xmatrix(ksvm.mod)[[1]] : subscript out of bounds 
> xmatrix(ksvm.mod)[[1]] 
Error in xmatrix(ksvm.mod)[[1]] : subscript out of bounds 
> xmatrix(ksvm.mod) 
<0 x 0 matrix> 
> ?xmatrix 
> ksvm.mod 
Support Vector Machine object of class "ksvm" 

SV type: C-svc (classification) 
parameter : cost C = 60 

[1] " Kernel matrix used as input." 

Number of Support Vectors : 831 

Objective Function Value : -211534.1 
Training error : 0.257677 
Probability model included. ​ 
> ncol(xmatrix(gene)[[1]]) # for dataframes used without precomputed kernels 
[1] 172 

私はモデルが任意のオブジェクトを格納していなかったと思いますが、私は理解で正しいのですか?事前計算されたカーネルでパッケージを使用するためのWebには良い例はないので、私はあなたの助けを求めて書いています。

PS:必要に応じて、テスト用のデータを提供しようとします。

答えて

0

あなたは半減しています。 predictオブジェクトは、newdataとサポートベクトルの間のカーネルの距離だけを必要としますが、それ自体を抽出するわけではありません。あなた自身で渡す必要があります。

はこれを試してみてください:

ksvm.mod <- ksvm(trainingset.outer, traininglabels.outer, kernel = "matrix",type="C-svc", C = 60, prob.model = TRUE) 
temp <- predict(ksvm.mod, test.kernel.outer[, SVindex(ksvm.mod)) 

私はここにtest.kernel.outerと仮定していますが、テストデータ(行)と列車のデータ(列)間のカーネルの距離を測定kernelMatrixです。

関連する問題