2011-03-01 126 views
1

當我使用libsvm從svm_train獲得svm_model後,如何從模型中獲取rho和SV?我知道這些值是在我得到模型時打印出來的,但我不知道如何獲得SV。 例如:如何從svm_model(在Python中)獲取支持向量和rho值?

svm_model = svmutil.svm_train(Labels,X, svm_options) 

現在,如何從svm_model的RHO值和SV的?

+0

我想svm_model已經爲RHO和SV的存取....是什麼物體上面有在裏面? – dfb

回答

1

經過近一個月的時間,我發現沒有辦法從svm_model這樣生成rho或SVs。如果有人想找到一個,請使用scikit-learn,它可以給你提供支持向量,雙重攔截和rho值,沒有任何麻煩。另外,它比libsvm的python實現更快並且支持numpy數組和矩陣。

1

如果您運行的帶有libSVM安裝本身可執行svm_train.exe,你可以找到它生成的模型文件作爲輸出,XXX.model。如果您使用編輯器檢查此模型,則可以在其中找到rho值和支持向量列表。

看起來像在C++/C代碼中,不支持從對象中提取此信息。

4

如果您使用的是svmutil包,那麼你就可以得到支持向量,係數和Rho如下,

m = svmutil.svm_train(y, xs, "-s 3 -t 2") # EPSILON_SVR and RBF kernel 
rho = m.rho[0] 
svs = m.get_SV() # Dictionary with indices 1, 2 corresponding to i-th dim on support vector 
sv_coeffs = m.get_sv_coef()