2014-10-08 9 views
6

scikit-learn kütüphanesinden LinearSVC kullanıyorum ve tahminler yapmak için eğitimden sonra modelimin kullandığı vektörleri bir şekilde çıkarmanın mümkün olup olmadığını merak ediyorum. Bir süre için google denedim ama şanssız. Herkes biliyor mu?scikit-learn, linearsvc - eğitimli SVM'den destek vektörleri nasıl edinilir?

+0

Destek vektörleri demek istiyorum, 'LinearSVC' aslında bunları kullanmıyor. –

+0

'LinearSVC' destek vektörünü kullanmıyor, ancak kavram hala var ve hala kullanışlı olabilir. –

cevap

4

Maalesef bunu yapmanın bir yolu yok gibi görünüyor. LinearSVC, liblinear'ı (see relevant code) çağırır, ancak vektörleri, yalnızca katsayıları ve kesişme noktasını almaz.

Bir alternatif (yerine liblinear esaslı bir LIBSVM) 'lineer' çekirdek ile SVC kullanmak olacaktır, ama aynı zamanda poly, dbf ve sigmoid çekirdek bu seçeneği destekleyen:

from sklearn import svm 

X = [[0, 0], [1, 1]] 
y = [0, 1] 

clf = svm.SVC(kernel='linear') 
clf.fit(X, y) 
print clf.support_vectors_ 

Çıktı:

Libenear, çok sayıda örnek için daha iyi ölçeklendirir, ancak aksi takdirde çoğunlukla eşdeğerdir.
+0

Teşekkürler, Elyase. Eğer scikit-learn'de bulunan diğer SVC tiplerini kullanacaksam, vektörleri (ya da polinomal çekirdeği kullanırsam bunları nasıl doğru arayacağımı) bir şekilde tanımlamak mümkün olacak mı? –

+0

@MaximHaytovich, Evet, cevabımı güncelledim. – elyase

2

eğer yardımcı olur emin değilim, ama benzer bir şey arıyordum ve sonuca eğer olmasıydı: Sonra

clf = svm.LinearSVC() 

bu:

clf.decision_function(x) 

bu eşit mi:

clf.cof_.dot(x) + clf.intercept_ 
İlgili konular