Saat ini saya menggunakan Scikit belajar dengan kode berikut:
clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0,
class_weight='auto')
dan kemudian cocok dan memprediksi untuk satu set data dengan 7 label berbeda. Saya mendapat hasil yang aneh. Tidak peduli teknik validasi silang mana yang saya gunakan label prediksi pada set validasi akan selalu menjadi label 7.
Saya mencoba beberapa parameter lain, termasuk yang default penuh ( svm.SVC()
) tetapi selama metode kernel yang saya gunakan rbf
bukan poly
atau linear
itu tidak akan berfungsi, sementara itu berfungsi dengan sangat baik untuk poly
dan linear
.
Selain itu saya sudah mencoba prediksi pada data kereta bukan data validasi dan sangat cocok.
Adakah yang melihat masalah seperti ini sebelumnya dan tahu apa yang terjadi di sini?
Saya tidak pernah melihat distribusi kelas saya secara detail tetapi saya tahu seharusnya sekitar 30% dari mereka adalah 7, 14% adalah 4.
Saya bahkan mencoba implementasi 1-vs-rest manual dan itu masih tidak membantu.
sumber
Jawaban:
scikit-learn memiliki fasilitas pencarian hyperparameter terbatas, tetapi Anda dapat menggunakannya bersama-sama dengan perpustakaan tuning seperti Optunity . Contoh tentang menyetel scikit-belajar SVC dengan Optunity tersedia di sini .
Penafian: Saya adalah pengembang utama Optunity.
sumber
Masalahnya ternyata pengujian parameter. Saya tidak mencoba kapan
gamma
berada di antara 0,0 (yaitu 1 / n_feature) dan 1. Pada data sayagamma
harus beralih ke sesuatu di sekitar1e-8
sumber