J'essaie d'utiliser l'objet LogisticRegression de sklearn 0.11 pour ajuster un modèle sur 200 000 observations avec environ 80 000 fonctionnalités. L'objectif est de classer les descriptions de texte court dans 1 des 800 classes.Erreur de mémoire de régression logistique de Scikit-Learn
Lorsque je tente d'adapter le classificateur pythonw.exe me donne:
Erreur d'application "L'instruction à ... mémoire à 0x00000000". La mémoire n'a pas pu être écrite. "
Les caractéristiques sont extrêmement clairsemées, environ 10 par observation, et sont binaires (1 ou 0), donc par mon dos du calcul de l'enveloppe mes 4 Go de RAM devraient être en mesure de gérer les exigences de mémoire, mais cela ne semble pas être le cas.Les modèles ne correspondent que lorsque j'utilise moins d'observations et/ou moins de fonctionnalités
Si quoi que ce soit, je voudrais utiliser encore plus d'observations et de fonctionnalités. La compréhension naïve est que la bibliothèque liblinear qui exécute les choses dans les coulisses est capable de supporter cela.)
Mon code ressemble à ceci:
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)
Les caractéristiques function() Je passe à l'analyseur renvoie simplement une liste de chaînes indiquant les caractéristiques détectées à chaque observation. J'utilise Python 2.7, sklearn 0.11, Windows XP avec 4 Go de mémoire vive (RAM).
L'interpréteur Python s'est-il bloqué? Ecrire à '0x0' est une erreur assez grave, nous (les développeurs de scikit-learn) devrions l'examiner. –
L'interpréteur Python se bloque. –
L'ensemble de données que vous utilisez est-il public? Pouvez-vous reproduire ce crash avec un ensemble de données plus petit (par exemple avec 'x_first_half = x [: x.shape [0]/2]' ou 'x_second_half = x [x.forme [0]/2:] '? – ogrisel