Estoy intentando utilizar sklearn de 0,11 objeto regresión logística para ajustar un modelo en 200.000 observaciones con alrededor de 80.000 funciones. El objetivo es clasificar las descripciones cortas de texto en 1 de 800 clases.scikit-learn Regresión logística de memoria Error
Cuando intento para adaptarse a la pythonw.exe clasificador me da:
Error de aplicación "La instrucción en ... referencia a memoria en 0x00000000". La memoria no se pudo escribir ".
Las características son extremadamente dispersas, aproximadamente 10 por observación, y son binarias (1 o 0), así que según mi cálculo del sobre, mis 4 GB de RAM deberían poder manejar los requisitos de memoria, pero ese no parece ser el caso. Los modelos solo se ajustan cuando uso menos observaciones y/o menos funciones.
En todo caso, me gustaría utilizar aún más observaciones y características. la comprensión ingenua es que la biblioteca liblinear que ejecuta cosas detrás de escena es capaz de soportar eso. ¿Alguna idea de cómo podría exprimir algunas observaciones más en?
Mi código es así:
y_vectorizer = LabelVectorizer(y) # my custom vectorizer for labels
y = y_vectorizer.fit_transform(y)
x_vectorizer = CountVectorizer(binary = True, analyzer = features)
x = x_vectorizer.fit_transform(x)
clf = LogisticRegression()
clf.fit(x, y)
La función de funciones() que paso al analizador solo devuelve una lista de cadenas que indican las características detectadas en cada observación.
estoy usando Python 2.7, sklearn 0.11, Windows XP con 4 GB de RAM.
¿Falló el intérprete de Python? Escribir a '0x0' es un error bastante grave, nosotros (desarrolladores de scikit-learn) debemos investigarlo. –
El intérprete de Python se cuelga. –
¿El conjunto de datos que está utilizando es público? ¿Puede reproducir este accidente con un pequeño conjunto de datos (por ejemplo con 'x_first_half = x [: x.shape [0]/2]' 'o x_second_half = x [x.forma [0]/2:] '? – ogrisel