Python'da scikits.learn kullanarak bir grup RBF SVM'si eğitmiş ve daha sonra da Sonuçları Pickled. Bunlar görüntü işleme görevleri içindir ve test yapmak istediğim bir şey, bazı test görüntülerinin her bir pikselinde her bir sınıflandırıcıyı çalıştırır. Yani, özellik vektörünü piksel (i, j) üzerinde ortalanmış bir pencereden ayıklayın, her sınıflandırıcıyı bu özellik vektöründe çalıştırın ve ardından bir sonraki piksele geçin ve tekrarlayın. Bu Python ile çok yavaş.Daha sonra scikits.learn sınıflandırıcıdan bilgi ayıklamak için C kodunda kullanın:
Açıklama: Ben dediğimde Ben kullandığı scikits.learn bile LIBSVM altında-luk kod çok yavaş olduğu anlamına "Bu ... çok yavaş". Aslında GPU için manuel karar fonksiyonu yazıyor, böylece her pikseldeki sınıflama paralel olarak gerçekleşiyor.
Sınıflandırıcılar Pickle ile yüklemek ve sonra kararın özellik vektöründen nasıl hesaplandığını açıklayan ve sonra bu bilgileri kendi C koduma ileten bir özellik yakalamam mümkün mü? Doğrusal SVM'lerde, ağırlık vektörünü ve önyargı vektörünü çıkartabilir ve bunları bir C işlevine girdi olarak ekleyebilirim. Fakat RBF sınıflandırıcıları için yapılması gereken eşdeğer şey nedir ve bu bilgiyi scikits.learn nesnesinden nasıl edinebilirim?
Eklenme: İlk çözümde denemeler.
Sınıflandırıcı nesnesinin, dizinin her dizisi olarak destek vektörlerini içeren support_vectors_
özniteliğine sahip olduğu anlaşılıyor. dual_coef_
özniteliği de vardır, bu da 1 len(support_vectors_)
katsayıları dizisidir. Doğrusal olmayan SVM'ler standart öğreticiler bakıldığında, kişinin aşağıdakileri yapmanız gerektiğini daha sonra görünür:
- hesaplayın test altında veri noktasından özellik vektörü
v
. Bu,support_vectors_
satırlarıyla aynı uzunluktaki bir vektör olacaktır. support_vectors_
'dakii
numaralı her satır için,d[i]
numaralı destek karesini, bu destek vektörü ilev
arasında hesaplayın.gamma
,gamma
'un RBF parametresi olduğut[i]
olarakt[i]
olarak hesaplayın.- Toplamı kadar
dual_coef_[i] * t[i]
tümi
bitti. Scikits.learn sınıflandırıcısınınintercept_
özniteliğinin değerini bu toplama ekleyin. gerçekten Sınıflandırıcınınintercept_
nitelik önyargı terimini tutan bahseder numaralı Sayfada 9 bu documentation link at: toplamı pozitifse - , 0.
Eklendi olarak sınıflandırmak, Aksi 1 olarak sınıflandırmak . Bunu yansıtmak için yukarıdaki adımları güncelledim.
dokümantasyon bağlantı düşünceli cevap için – ademar111190