2016-07-01 42 views
6

Mam zbiór danych treningowych z 8670 prób, a każda próba ma długość 125-czasowych próbek, podczas gdy mój zestaw testowy składa się z 578 prób. Kiedy stosuję algorytm SVM z scikit-learn, uzyskuję całkiem dobre wyniki.ValueError: Ten solver potrzebuje próbek z co najmniej 2 klas w danych, ale dane zawierają tylko jedną klasę: 1.0

Jednak, kiedy zastosować regresję logistyczną, ten błąd występuje:

"ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 1.0" .

Moje pytanie brzmi dlaczego SVM jest w stanie podać prognoz, ale regresji logistycznej daje ten błąd?

Czy jest możliwe, że coś jest nie tak w zbiorze danych, czy też regresja logistyczna nie mogła się sklasyfikować, ponieważ próbki treningowe wyglądają podobnie?

+1

Należy opublikować minimalny kod, który działa, w tym przykładowe dane, aby wygenerować błąd. – bakkal

+0

Coś jest nie tak z twoim kodem, ani SVM, ani LR nie działa z jedną klasą i obaj rzucają ten sam błąd. – lejlot

+0

Chciałbym przegłosować na moją odpowiedź poniżej! Jeśli to rozwiązało twój problem! Dziękuję Ci! – Nico

Odpowiedz

7

czytałem to w następnym numerze na podobnym modułem liniowym: https://github.com/lensacom/sparkit-learn/issues/49

„Niestety jest to problem rzeczywiście Sparkit trenuje sklearn modele liniowe równolegle, a następnie uśrednia je w etapie redukcji Istnieje co najmniej.. jeden blok, który zawiera tylko jedną z etykiet aby sprawdzić, spróbuj wykonać następujące czynności:..

train_Z[:, 'y']._rdd.map(lambda x: np.unique(x).size).filter(lambda x: x < 2).count() 

aby rozwiązać można losowe dane pociągów, aby uniknąć bloki z jednej etykiety, ale wciąż czeka na sprytnego rozwiązania”

EDYCJA: Znalazłem rozwiązanie, powyższa analiza błędu była prawidłowa. To byłoby rozwiązanie.

Shuffle tablic w tej samej kolejności użyłem scikit-learn utils moduł:

from sklearn.utils import shuffle 
X_shuf, Y_shuf = shuffle(X_transformed, Y) 

następnie wykorzystać te tasuje tablice ponownie przeszkolić swój model i będzie działać!

+2

Niesamowici mężczyźni! To jest naprawdę pomocne – imazzara