libsvm veri formatı [kapalı]


31

Destek vektör sınıflandırması için libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) aracını kullanıyorum . Ancak, girdi verilerinin formatı hakkında kafam karıştı.

README'den:

Eğitim ve test veri dosyasının formatı şudur:

<label> <index1>:<value1> <index2>:<value2> ...
.
.
.

Her satır bir örnek içerir ve '\ n' karakteriyle sonlanır. Sınıflandırma için, <label>sınıf etiketini gösteren bir tamsayıdır (çoklu sınıf desteklenir). Regresyon için, <label>herhangi bir gerçek sayı olabilen hedef değerdir. Bir sınıf SVM için, kullanılmaz, bu nedenle herhangi bir sayı olabilir. Çift <index>:<value>, bir özellik (özellik) değeri verir: <index>1'den başlayan bir tam sayıdır ve <value> gerçek bir sayıdır. Bunun tek istisnası, <index>0'dan başlayan önceden hesaplanmış çekirdek ; önceden hesaplanmış çekirdekler bölümüne bakınız. Endeksler artan sırada olmalıdır. Test dosyasındaki etiketler yalnızca doğruluk veya hataları hesaplamak için kullanılır. Eğer bilinmiyorlarsa, ilk sütunu herhangi bir sayıyla doldurmanız yeterlidir.

Aşağıdaki sorularım var:

  1. Kullanımı nedir <index>? Hangi amaca hizmet ediyor?
  2. Farklı veri örneklerinin aynı endeks değerleri arasında bir yazışma var mı?
  3. Aradaki dizini özlüyorum / atlarsam ne olur?

Libsvm paketine dahil edilen * heart_scale * veri dosyası, 12. satırda, dizin 2'den başlar çünkü <value>for 1 indeksi bilinmeyen / eksik mi olarak alındı? Not: Paketle birlikte verilen tools / checkdata.py aracı, * heart_scale * dosyasının doğru olduğunu söyler.

Yanıtlar:


23

Bu bağlantı yardımcı olacaktır: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Verilerin seyrek bir dizi / matris formunda saklandığı belirtilmiştir. Temel olarak, yalnızca sıfır olmayan verilerin depolandığı ve eksik verilerin sıfır tutma değeri olarak alındığı anlamına gelir. Sorularınız için:

a) Dizin yalnızca özellikleri / parametreleri birbirinden ayırmanın bir yolu olarak işlev görür. Bir hiper uzay açısından, sadece her bir bileşeni belirtiyor: Örneğin: 3-D (3 özellikler) endeksleri 1,2,3, x, y, z koordinatlarına karşılık gelir.

b) Yazışmalar sadece matematikseldir, hiper düzlemi oluştururken, bunlar koordinatlar olarak işlev görür.

c) Aralarından birini atlarsanız, varsayılan sıfır değerine atanmalıdır.

Kısacası, +1 1: 0.7 2: 1 3: 1 çevirir:

+1 sınıfına, nokta (0.7,1,1) atayın.


4

Sadece küçük ve hızlı rehber:

LibSVM formatı, belgenizin önceden işlenmesi gerektiği anlamına gelir. Kaç tane sınıflandırma sınıfının kullanılacağını (büyük olasılıkla 2) ve alan içerdiğini bilmeniz gerekir.

Sınıflandırma sınıfı doğru / yanlış gibi bir şeydir; 0,1, ... Burada onu tam sayılara dönüştürmeniz gerekir (örn. 0,1).

Özellik alanı , çok boyutlu verileriniz için bir alandır. Her özellik (vektör) kendi kimliğine (dizinine) ve değerine sahip olmalıdır. Örneğin 1: 23.2, özellik / boyut 1'in 23.2 değerine sahip olduğu anlamına gelir

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.