Sto tentando di utilizzare l'oggetto LogisticRegression di sklearn 0.11 per adattare un modello a 200.000 osservazioni con circa 80.000 funzioni. L'obiettivo è classificare descrizioni di brevi testi in 1 delle 800 classi.Scikit-Learn Logistic Regression Errore di memoria
Quando si tenta di adattarsi alla pythonw.exe classificatore mi dà:
Errore dell'applicazione "L'istruzione a ... riferimento alla memoria a 0x00000000". La memoria non può essere scritta ".
Le funzionalità sono estremamente sparse, circa 10 per osservazione e sono binarie (1 o 0), quindi con il mio calcolo della busta i miei 4 GB di RAM dovrebbero essere in grado di gestire i requisiti di memoria, ma ciò non sembra essere il caso.I modelli si adattano solo quando utilizzo un minor numero di osservazioni e/o meno funzioni
Se mai, vorrei utilizzare ancora più osservazioni e funzionalità. comprensione ingenua è che la libreria liblinear che gestisce le cose dietro le quinte è in grado di supportarle.Qualsiasi idea su come potrei spremere qualche altra osservazione in?
Il mio codice è simile a questo:
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 funzione features() che si passa all'analizzatore restituisce solo un elenco di stringhe che indicano le caratteristiche rilevate in ciascuna osservazione.
Sto usando Python 2.7, sklearn 0.11, Windows XP con 4 GB di RAM.
Si è verificato un arresto anomalo dell'interprete Python? Scrivere su '0x0' è un errore piuttosto grave, noi (gli sviluppatori di scikit-learn) dovremmo esaminarlo. –
L'interprete Python si arresta in modo anomalo. –
Il set di dati che si sta utilizzando è pubblico? Puoi riprodurre questo crash con un set di dati più piccolo (ad esempio con 'x_first_half = x [: x.shape [0]/2]' o 'x_second_half = x [x.forma [0]/2:] '? – ogrisel