Я пытаюсь использовать объект LogisticRegression sklearn 0.11, чтобы соответствовать модели на 200 000 наблюдений с примерно 80 000 функциями. Цель состоит в том, чтобы классифицировать краткие текстовые описания по 1 из 800 классов.
Когда я пытаюсь подобрать классификатор, pythonw.exe выдает мне:
Ошибка приложения «Инструкция по адресу... ссылается на память по адресу 0x00000000». Память не могла быть записана».
Признаки чрезвычайно разрежены, около 10 на наблюдение, и являются двоичными (либо 1, либо 0 ), поэтому, по моим подсчетам, мои 4 ГБ ОЗУ должны быть в состоянии справиться с требованиями к памяти, но это не так. похоже, это не так. Модели подходят только тогда, когда я использую меньше наблюдений и/или меньше признаков.
Во всяком случае, я хотел бы использовать еще больше наблюдений и возможностей. Мое наивное понимание состоит в том, что библиотека liblinear, работающая за кулисами, способна это поддерживать. Любые идеи о том, как я мог бы втиснуть еще несколько наблюдений?
Мой код выглядит так:
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)
Функция features (), которую я передаю анализатору, просто возвращает список строк, указывающих особенности, обнаруженные в каждом наблюдении.
Я использую Python 2.7, sklearn 0.11, Windows XP с 4 ГБ оперативной памяти.