ValueError: Для этого решателя требуются образцы как минимум 2 классов в данных, но данные содержат только один класс: False - PullRequest
0 голосов
/ 21 июня 2019

У меня есть пример dict, начинающийся как этот

{'first': {'second': [],
  'third': 1.0,
  'fourth': {'fifth': 'test', 'value': 2.0},
  'sixth': {'seventh': 3.0,
   'eight': 4.0,

Я пробовал это

y_test = np.array([x['first']['sixth'] == 'seventh' for x in test_data])

когда

test = LogisticRegression(class_weight='balanced').fit(X_test, y_test)

но продолжайте получать

ValueError : этому решающему устройству требуются как минимум 2 класса в данные, но данные содержат только один класс: False

Примечание : ячейки 4 и 7 из записная книжка

изменить: я изменил на

y_test = np.array([x['first']['sixth'] == 'seventh' for x in test_data], dtype=float) и теперь проблема в

ValueError: Unknown label type: 'continuous'

для которого я использовал кодировку метки

import numpy as np
from sklearn                        import metrics, svm
from sklearn.linear_model           import LogisticRegression
from sklearn import preprocessing
from sklearn import utils

lab_enc = preprocessing.LabelEncoder()
training_scores_encoded = lab_enc.fit_transform(y_test)

, который идет в мультикласс

или svc, чтобы держать поплавки

from sklearn.svm import SVR
svr = SVR()
sld = svr.fit(x_test, y_test)

но оба они занимают много времени

использование dtype = int занимает 8 минут на GPU T4 но результаты имеют много шума и проблем с идентичностью

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

вот решение, которое работает быстро, 8 секунд с t4

from sklearn.linear_model import SGDRegressor
sgds = SGDRegressor()
sld = sgds.fit(x_test, y_test)
results = sld.coef_.reshape((18, 512))
0 голосов
/ 21 июня 2019

Все просто, в ошибке четко указывается, что существует только один класс меток.

Необходимо убедиться, что в y_test есть хотя бы пара классов.Вы можете проверить массив y_test, чтобы убедиться, что есть два класса True and False до подгонки к модели.

# Sample y_test
y_test = array([ True, False,  True,  True])

# Check classes
set(y_test)
{False, True}

# In your case
set(y_test)
{False}
# Make sure your data has at least 2 classes
...