ValueError: este solucionador necesita muestras de al menos 2 clases en los datos, pero los datos contienen solo una clase: 1.0

Tengo un conjunto de datos de entrenamiento de 8670 pruebas y cada prueba tiene una longitud de 125 muestras de tiempo, mientras que mi prueba consta de 578 pruebas. Cuando aplico el algoritmo SVM de scikit-learn, obtengo resultados bastante buenos.

Sin embargo, cuando aplico la regresión logística, se produce este error:

“ValueError: este solucionador necesita muestras de al menos 2 clases en los datos, pero los datos contienen solo una clase: 1.0”.

Mi pregunta es ¿por qué SVM puede dar predicciones pero la regresión logística da este error?

¿Podría ser posible que algo esté mal en el conjunto de datos o simplemente que la regresión logística no pueda clasificarse porque las muestras de entrenamiento se parecen a esto?

Leí esto en el siguiente número de un módulo lineal similar: https://github.com/lensacom/sparkit-learn/issues/49

“Lamentablemente, este es un error. Sparkit entrena los modelos lineales de sklearn en paralelo, luego los promedia en un paso de reducción. Hay al menos un bloque, que contiene solo una de las tags. Para verificar, intente lo siguiente:

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

Para resolverlo, podría aleatorizar los datos del tren para evitar bloques con una sola etiqueta, pero esto todavía está esperando una solución inteligente ".

EDIT: Encontré una solución, el análisis anterior del error fue correcto. Esto sería una solución.

Para barajar los arreglos en el mismo orden, utilicé un módulo de utilidades de scikitlearn:

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

Luego, utiliza esas matrices barajadas para entrenar a tu modelo de nuevo y ¡funcionará!