2013-08-20 36 views
0

我試圖在LibSVM 3.17(Java版本)中使用預先計算的內核,但遇到一個錯誤,該錯誤聲明: '錯誤的輸入格式:svm_train類的read_problem()方法內的sample_serial_number超出範圍'。嘗試在LibSVM中使用預先計算的內核時遇到錯誤:「輸入格式錯誤:sample_serial_number超出範圍」

我正在使用線性內核開始,即採取兩個向量的點積。我正在使用的數據已經在範圍[-1,1]中使用svm_scale進行了縮放。當保存我的預先計算的內核時,我將第一列的行的ID(實際上是該行的唯一標識符)以及後續列的矩陣內容保存起來。我的生成矩陣是對稱的,我已經包括了第一對夫婦爲你的評價如下文件內容的條目:

48:0.015231278900000159 

中遇到:

1 0:10.3098007199 1:9.691388073999995 2:8.269529587900001 3:10.836359234799996 
2 0:9.691388073999995 1:10.441238090599997 2:7.5937360488 3:9.193978496500002 
3 0:8.269529587900001 1:7.5937360488 2:8.1263441462 3:9.8885507424 
4 0:10.836359234799996 1:9.193978496500002 2:9.8885507424 3:13.705259598099996  

錯誤本身時,當值發生我的預計算內核文件(恰好在第一行)。誤差的產生是因爲上面的值失敗下列測試:

if ((int)prob.x[i][0].value <= 0 || (int)prob.x[i][0].value > max_index) 

其中prob.x [I] [0]。價值= 0.015231278900000159在svm_train read_problem()內。

我對於如何繼續處理這個問題有點困惑。我想知道我是否以正確的文件格式保存了數據?我已經閱讀了LibSVM中的自述文件,並且我認爲我正在做所有事情(但顯然不是)!我也看了看已經給其他的答案,比如:

Libsvm precomputed kernelsPrecomputed Kernels with LibSVM in Python

可惜我看不到在其中的答案。最後一個注意事項:當我在[0,1]範圍內對數據進行縮放時,上述錯誤沒有發生(因爲矩陣中的所有值現在> = 1),但我對於爲什麼會感到困惑矩陣中的負值似乎首先會造成問題。

提供的任何幫助/見解將不勝感激。

回答

0

我收到了同樣的信息和解決方案竟然是在訓練中指定的參數範圍無效。例如,就我而言,我試圖輸入'-t 4',而t標誌選項僅爲(0,1,2,3)。

相關問題