ml-py svm сходится, но ошибочно классифицирует - PullRequest
0 голосов
/ 27 ноября 2011

Я пытаюсь выполнить некоторую задачу классификации с помощью Python и SVM.

Из собранных данных я извлек векторы функций для каждого класса и создал учебный набор. Векторы объектов имеют n-размеры (39 и более). Итак, скажем, для 2 классов у меня есть набор из 39 векторов объектов и один массив меток классов, соответствующих каждой записи в векторе объектов. В настоящее время я использую mlpy и делаю что-то вроде этого:

import numpy as np
import mlpy 

svm=mlpy.Svm('gaussian') #tried a linear kernel too but not having the convergence
instance= np.vstack((featurevector1,featurevector1))
label=np.hstack((np.ones((1,len(featurevector1),dtype=int),-1*np.ones((1,len(featurevector2),dtype=int))) 

# Назначение метки (+ 1 / -1) для каждой записи в экземпляре, (+1 для записей, поступающих из #featurevector 1 и -1 для featurevector2

svm.compute(instance,label) #it converges and outputs 1
svm.predict(testdata) #This one says all class label are 1 only whereas I ve testing data from both classes

Я здесь ошибаюсь? Или я должен использовать какую-то другую библиотеку? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 декабря 2011

Я не использую mlpy, но np.ones((1,len(featurevector1)), возможно, должно быть просто np.ones(len(featurevector1)) -
print .shape каждого, чтобы увидеть разницу.
(Если у вас есть ссылка на публичные данные что-нибудькак у вас, не могли бы вы опубликовать это, пожалуйста?)

...