формат даних libsvm [закрито]


31

Я використовую інструмент libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) для класифікації вектора підтримки. Однак я збентежений щодо формату вхідних даних.

З ПРОЧИТАННЯ:

Формат файлу даних про навчання та тестування:

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

Кожен рядок містить екземпляр і закінчується символом '\ n'. Для класифікації <label>- це ціле число, що вказує мітку класу (підтримується багатокласний). Для регресії <label>- цільове значення, яке може бути будь-яким реальним числом. Для однокласного SVM він не використовується, тому може бути будь-яке число. Пара <index>:<value>дає значення (атрибут) значення: <index>це ціле число, починаючи з 1 і <value> є реальним числом. Єдиний виняток - попередньо обчислене ядро, яке <index>починається від 0; див. розділ попередньо обчислених ядер. Індекси повинні бути в порядку ЗБОРУВАННЯ. Мітки у файлі тестування використовуються лише для обчислення точності або помилок. Якщо вони невідомі, просто заповніть перший стовпець будь-якими цифрами.

У мене є такі питання:

  1. Яке використання <index>? Якій цілі він служить?
  2. Чи існує відповідність між однаковими значеннями індексу різних примірників даних?
  3. Що робити, якщо пропустити / пропустити індекс між ними?

Я запитую, тому що файл даних * heart_scale *, який входить до пакету для libsvm, у рядку 12, індекс починається від 2. Чи є <value>для індексу 1 прийнятим / невідомим? Примітка: інструмент / checkdata.py, що постачається з пакетом, говорить про те, що файл * heart_scale * правильний.

Відповіді:


23

Це посилання має допомогти: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Згадано, що дані зберігаються у розрідженій формі масиву / матриці. По суті, це означає, що зберігаються лише ненульові дані, а будь-які відсутні дані приймаються за значення нульового утримання. Для ваших питань:

а) Індекс просто служить способом розрізнити особливості / параметри. З точки зору гіперпростори, це просто позначення кожного компонента: Наприклад: 3-D (3 функції) індекси 1,2,3 відповідали б координатам x, y, z.

б) Відповідність є лише математичною, при побудові гіперплощини вони служать координатами.

c) Якщо пропустити один з них між ними, йому слід призначити значення за замовчуванням, що дорівнює нулю.

Якщо коротко, +1 1: 0,7 2: 1 3: 1 означає:

Призначте до класу +1, бал (0.7,1,1).


4

Просто невеликий та швидкий путівник:

Формат LibSVM означає, що ваш документ потрібно попередньо обробити. Потрібно знати, скільки класів класифікації буде використано (швидше за все, 2) та простір можливостей.

Класифікаційний клас - це щось на зразок істинного / хибного; 0,1, ... Тут потрібно перетворити його на цілі числа (наприклад, 0,1).

Простір функцій - це простір для ваших багатовимірних даних. Кожна фігура (вектор) повинна мати свій ідентифікатор (індекс) та своє значення. Наприклад, 1: 23.2 означає, що функція / розмір 1 має значення 23,2

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.