SGDClassifier#

класс sklearn.linear_model.SGDClassifier(потеря='hinge', *, штраф='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, перемешивание=True, verbose=0, эпсилон=0.1, n_jobs=None, random_state=None, learning_rate='optimal', eta0=0.01, power_t=0.5, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False, среднее=False)[источник]#

Линейные классификаторы (SVM, логистическая регрессия и т.д.) с обучением SGD.

Этот оценщик реализует регуляризованные линейные модели со стохастическим градиентным спуском (SGD): градиент потерь оценивается для каждой выборки отдельно, и модель обновляется по ходу с уменьшающимся графиком силы (также известным как скорость обучения). SGD позволяет мини-пакетное (онлайн/внеядерное) обучение через partial_fit методом. Для наилучших результатов при использовании графика скорости обучения по умолчанию данные должны иметь нулевое среднее значение и единичную дисперсию.

Эта реализация работает с данными, представленными в виде плотных или разреженных массивов значений с плавающей точкой для признаков. Модель, которую она обучает, может контролироваться параметром loss; по умолчанию она обучает линейную машину опорных векторов (SVM).

Регуляризатор — это штраф, добавленный к функции потерь, который сжимает параметры модели к нулевому вектору, используя либо квадрат евклидовой нормы L2, либо абсолютную норму L1, либо их комбинацию (Elastic Net). Если обновление параметра пересекает значение 0.0 из-за регуляризатора, обновление обрезается до 0.0, чтобы позволить обучение разреженных моделей и достичь онлайн-отбора признаков.

Подробнее в Руководство пользователя.

Параметры:
потеря{‘hinge’, ‘log_loss’, ‘modified_huber’, ‘squared_hinge’, ‘perceptron’, ‘squared_error’, ‘huber’, ‘epsilon_insensitive’, ‘squared_epsilon_insensitive’}, по умолчанию=’hinge’

Функция потерь, которая будет использоваться.

  • ‘hinge’ дает линейный SVM.

  • 'log_loss' дает логистическую регрессию, вероятностный классификатор.

  • ‘modified_huber’ — это еще одна гладкая функция потерь, которая обеспечивает устойчивость к выбросам, а также оценки вероятности.

  • ‘squared_hinge’ похож на hinge, но имеет квадратичный штраф.

  • ‘perceptron’ — это линейная функция потерь, используемая алгоритмом перцептрона.

  • Другие потери, ‘squared_error’, ‘huber’, ‘epsilon_insensitive’ и ‘squared_epsilon_insensitive’, предназначены для регрессии, но могут быть полезны и в классификации; см. SGDRegressor для описания.

Более подробную информацию о формулах потерь можно найти в Руководство пользователя и вы можете найти визуализацию функций потерь в SGD: выпуклые функции потерь.

штраф{‘l2’, ‘l1’, ‘elasticnet’, None}, по умолчанию=’l2’

Штраф (также известный как регуляризационный член) для использования. По умолчанию 'l2', что является стандартным регуляризатором для линейных моделей SVM. 'l1' и 'elasticnet' могут привнести разреженность в модель (отбор признаков), недостижимую с 'l2'. Штраф не добавляется, когда установлено None.

Вы можете увидеть визуализацию штрафов в SGD: Штрафы.

alphafloat, по умолчанию=0.0001

Константа, умножающая член регуляризации. Чем выше значение, тем сильнее регуляризация. Также используется для вычисления скорости обучения, когда learning_rate установлено в 'optimal'. Значения должны быть в диапазоне [0.0, inf).

l1_ratiofloat, по умолчанию=0.15

Параметр смешивания Elastic Net, с 0 <= l1_ratio <= 1. l1_ratio=0 соответствует штрафу L2, l1_ratio=1 — L1. Используется только если penalty равно 'elasticnet'. Значения должны быть в диапазоне [0.0, 1.0] или может быть None if penalty не является elasticnet.

Изменено в версии 1.7: l1_ratio может быть None когда penalty не является "elasticnet".

fit_interceptbool, по умолчанию=True

Следует ли оценивать свободный член. Если False, предполагается, что данные уже центрированы.

max_iterint, по умолчанию=1000

Максимальное количество проходов по обучающим данным (также называемых эпохами). Это влияет только на поведение в fit метод, а не partial_fit метод. Значения должны быть в диапазоне [1, inf).

Добавлено в версии 0.19.

tolfloat или None, по умолчанию=1e-3

Критерий остановки. Если не None, обучение остановится, когда (loss > best_loss - tol) для n_iter_no_change последовательных эпох. Сходимость проверяется по обучающим потерям или потерям валидации в зависимости от early_stopping параметр. Значения должны быть в диапазоне [0.0, inf).

Добавлено в версии 0.19.

перемешиваниеbool, по умолчанию=True

Следует ли перемешивать обучающие данные после каждой эпохи.

verboseint, по умолчанию=0

Уровень детализации вывода. Значения должны быть в диапазоне [0, inf).

эпсилонfloat, по умолчанию=0.1

Эпсилон в эпсилон-нечувствительных функциях потерь; только если loss равно 'huber', 'epsilon_insensitive' или 'squared_epsilon_insensitive'. Для 'huber' определяет порог, при котором становится менее важно получить точный прогноз. Для epsilon-нечувствительности любые различия между текущим прогнозом и правильной меткой игнорируются, если они меньше этого порога. Значения должны быть в диапазоне [0.0, inf).

n_jobsint, default=None

Количество CPU, используемых для вычислений OVA (One Versus All, для многоклассовых задач). None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

random_stateint, экземпляр RandomState, по умолчанию=None

Используется для перемешивания данных, когда shuffle установлено в True. Передайте целое число для воспроизводимого результата при множественных вызовах функции. См. Глоссарий. Целочисленные значения должны находиться в диапазоне [0, 2**32 - 1].

learning_ratestr, по умолчанию='optimal'

Расписание скорости обучения:

  • ‘constant’: eta = eta0

  • ‘optimal’: eta = 1.0 / (alpha * (t + t0)) где t0 выбирается эвристикой, предложенной Леоном Ботту.

  • ‘invscaling’: eta = eta0 / pow(t, power_t)

  • ‘adaptive’: eta = eta0использует теплый старт с коэффициентами ближайшей модели (обученной на предыдущей итерации) на пути регуляризации. Это обычно ускоряет поиск гиперпараметров. early_stopping является True, текущая скорость обучения делится на 5.

  • 'pa1': пассивно-агрессивный алгоритм 1, см. [1]. Только с loss='hinge'. Обновление w += eta y x с eta = min(eta0, loss/||x||**2).

  • ‘pa2’: пассивно-агрессивный алгоритм 2, см. [1]. Только с loss='hinge'. Обновление w += eta y x с eta = hinge_loss / (||x||**2 + 1/(2 eta0)).

Добавлено в версии 0.20: Добавлена опция 'adaptive'.

Добавлено в версии 1.8: Добавлены опции 'pa1' и 'pa2'

eta0float, по умолчанию=0.01

Начальная скорость обучения для расписаний 'constant', 'invscaling' или 'adaptive'. Значение по умолчанию равно 0.01, но обратите внимание, что eta0 не используется по умолчанию для скорости обучения 'optimal'. Значения должны находиться в диапазоне (0.0, inf).

Для PA-1 (learning_rate=pa1) и PA-II (pa2), он задаёт агрессивность параметра для пассивно-агрессивного алгоритма, см. [1], где он называется C:

  • Для PA-I это максимальный размер шага.

  • Для PA-II он регуляризует размер шага (чем меньше eta0 чем больше он регуляризует.

Как общее эмпирическое правило для PA, eta0 должен быть малым, когда данные зашумлены.

power_tfloat, по умолчанию=0.5

Показатель степени для обратного масштабирования скорости обучения. Значения должны находиться в диапазоне [0.0, inf).

Устарело с версии 1.8: Отрицательные значения для power_t устарели в версии 1.8 и вызовут ошибку в 1.10. Используйте значения в диапазоне [0.0, inf) вместо этого.

early_stoppingbool, по умолчанию=False

Использовать ли раннюю остановку для завершения обучения, когда оценка валидации не улучшается. Если установлено в True, он автоматически отложит стратифицированную долю обучающих данных для валидации и завершит обучение, когда валидационная оценка, возвращаемая score метод не улучшается как минимум на tol в течение n_iter_no_change последовательных эпох.

См. Ранняя остановка стохастического градиентного спуска для примера эффектов ранней остановки.

Добавлено в версии 0.20: Добавлена опция 'early_stopping'

validation_fractionfloat, по умолчанию=0.1

Доля обучающих данных, которую следует выделить в качестве проверочного набора для ранней остановки. Должна быть в диапазоне от 0 до 1. Используется только если early_stopping равно True. Значения должны быть в диапазоне (0.0, 1.0).

Добавлено в версии 0.20: Добавлена опция 'validation_fraction'

n_iter_no_changeint, по умолчанию=5

Количество итераций без улучшения, которое нужно ждать перед остановкой обучения. Сходимость проверяется по обучающей потере или потере валидации в зависимости от early_stopping параметр. Целочисленные значения должны быть в диапазоне [1, max_iter).

Добавлено в версии 0.20: Добавлена опция 'n_iter_no_change'

class_weightdict, {class_label: weight} или "balanced", по умолчанию=None

Предустановка для параметра class_weight fit.

Веса, связанные с классами. Если не заданы, предполагается, что все классы имеют вес один.

Режим "balanced" использует значения y для автоматической настройки весов, обратно пропорциональных частотам классов во входных данных, как n_samples / (n_classes * np.bincount(y)).

warm_startbool, по умолчанию=False

При установке в True повторно использует решение предыдущего вызова fit в качестве инициализации, в противном случае просто стирает предыдущее решение. См. Глоссарий.

Повторный вызов fit или partial_fit при warm_start=True может привести к другому решению, чем при однократном вызове fit, из-за способа перемешивания данных. Если используется динамическая скорость обучения, она адаптируется в зависимости от количества уже просмотренных образцов. Вызов fit сбрасывает этот счетчик, в то время как partial_fit приведет к увеличению существующего счетчика.

среднееbool или int, по умолчанию=False

При установке значения True, вычисляет усредненные веса SGD по всем обновлениям и сохраняет результат в coef_ атрибут. Если установлено в целое число больше 1, усреднение начнется, как только общее количество увиденных образцов достигнет average. Таким образом, average=10 начнет усреднение после обработки 10 образцов. Целочисленные значения должны быть в диапазоне [1, n_samples].

Атрибуты:
coef_ndarray формы (1, n_features), если n_classes == 2, иначе (n_classes, n_features)

Веса, назначенные признакам.

intercept_ndarray формы (1,) если n_classes == 2 иначе (n_classes,)

Константы в функции принятия решений.

n_iter_int

Фактическое количество итераций до достижения критерия остановки. Для многоклассовых подгонок это максимум по каждой бинарной подгонке.

classes_массив формы (n_classes,)
t_int

Количество обновлений весов, выполненных во время обучения. То же, что и (n_iter_ * n_samples + 1).

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

Добавлено в версии 1.0.

Смотрите также

sklearn.svm.LinearSVC

Линейная классификация методом опорных векторов.

LogisticRegression

Логистическая регрессия.

Perceptron

Наследуется от SGDClassifier. Perceptron() эквивалентно SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None).

Ссылки

[1] (1,2)

Online Passive-Aggressive Algorithms <http://jmlr.csail.mit.edu/papers/volume7/crammer06a/crammer06a.pdf> K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR (2006)

Примеры

>>> import numpy as np
>>> from sklearn.linear_model import SGDClassifier
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.pipeline import make_pipeline
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> Y = np.array([1, 1, 2, 2])
>>> # Always scale the input. The most convenient way is to use a pipeline.
>>> clf = make_pipeline(StandardScaler(),
...                     SGDClassifier(max_iter=1000, tol=1e-3))
>>> clf.fit(X, Y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('sgdclassifier', SGDClassifier())])
>>> print(clf.predict([[-0.8, -1]]))
[1]
decision_function(X)[источник]#

Предсказывает оценки уверенности для образцов.

Оценка уверенности для образца пропорциональна знаковому расстоянию от этого образца до гиперплоскости.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных, для которой мы хотим получить оценки уверенности.

Возвращает:
scoresndarray формы (n_samples,) или (n_samples, n_classes)

Оценки уверенности для каждого (n_samples, n_classes) комбинация. В двоичном случае оценка уверенности для self.classes_[1] где >0 означает, что этот класс будет предсказан.

densify()[источник]#

Преобразовать матрицу коэффициентов в плотный формат массива.

Преобразует coef_ преобразование (обратное) в numpy.ndarray. Это формат по умолчанию coef_ и требуется для обучения, поэтому вызов этого метода необходим только для моделей, которые ранее были разрежены; в противном случае это пустая операция.

Возвращает:
self

Обученный оценщик.

fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[источник]#

Обучение линейной модели со стохастическим градиентным спуском.

Параметры:
X{array-like, sparse matrix}, форма (n_samples, n_features)

Обучающие данные.

yndarray формы (n_samples,)

Целевые значения.

coef_initndarray формы (n_classes, n_features), по умолчанию=None

Начальные коэффициенты для теплого старта оптимизации.

intercept_initndarray формы (n_classes,), по умолчанию=None

Начальный intercept для теплого старта оптимизации.

sample_weightarray-like, shape (n_samples,), default=None

Веса, применяемые к отдельным образцам. Если не указаны, предполагаются равномерные веса. Эти веса будут умножены на class_weight (переданный через конструктор), если class_weight указан.

Возвращает:
selfobject

Возвращает экземпляр self.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

partial_fit(X, y, классы=None, sample_weight=None)[источник]#

Выполнить одну эпоху стохастического градиентного спуска на заданных выборках.

Внутренне этот метод использует max_iter = 1. Поэтому не гарантируется, что минимум функции стоимости достигается после одного вызова. Вопросы, такие как сходимость цели, ранняя остановка и регулировка скорости обучения, должны обрабатываться пользователем.

Параметры:
X{array-like, sparse matrix}, форма (n_samples, n_features)

Подмножество обучающих данных.

yndarray формы (n_samples,)

Подмножество целевых значений.

классыndarray формы (n_classes,), по умолчанию=None

Классы во всех вызовах partial_fit. Можно получить через np.unique(y_all), где y_all — целевой вектор всего набора данных. Этот аргумент требуется для первого вызова partial_fit и может быть опущен в последующих вызовах. Обратите внимание, что y не обязательно должен содержать все метки в classes.

sample_weightarray-like, shape (n_samples,), default=None

Веса, применяемые к отдельным выборкам. Если не указаны, предполагаются равномерные веса.

Возвращает:
selfobject

Возвращает экземпляр self.

predict(X)[источник]#

Предсказать метки классов для выборок в X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных, для которой мы хотим получить предсказания.

Возвращает:
y_predndarray формы (n_samples,)

Вектор, содержащий метки классов для каждого образца.

predict_log_proba(X)[источник]#

Логарифм оценок вероятности.

Этот метод доступен только для логарифмических потерь и модифицированных потерь Хубера.

При loss="modified_huber" оценки вероятностей могут быть строгими нулями и единицами, поэтому взятие логарифма невозможно.

См. predict_proba подробности.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Входные данные для прогнозирования.

Возвращает:
Tarray-like, shape (n_samples, n_classes)

Возвращает логарифм вероятности выборки для каждого класса в модели, где классы упорядочены так, как они находятся в self.classes_.

predict_proba(X)[источник]#

Оценки вероятностей.

Этот метод доступен только для логарифмических потерь и модифицированных потерь Хубера.

Многоклассовые вероятностные оценки выводятся из бинарных (один-против-всех) оценок простой нормализацией, как рекомендовано Zadrozny и Elkan.

Бинарные вероятностные оценки для loss="modified_huber" задаются как (clip(decision_function(X), -1, 1) + 1) / 2. Для других функций потерь необходимо выполнить правильную калибровку вероятностей, обернув классификатор с CalibratedClassifierCV вместо этого.

Параметры:
X{array-like, sparse matrix}, форма (n_samples, n_features)

Входные данные для прогнозирования.

Возвращает:
ndarray формы (n_samples, n_classes)

Возвращает вероятность выборки для каждого класса в модели, где классы упорядочены так, как они находятся в self.classes_.

Ссылки

Задрозны и Элкан, «Преобразование оценок классификатора в многоклассовые вероятностные оценки», SIGKDD’02, https://dl.acm.org/doi/pdf/10.1145/775047.775151

Обоснование формулы в случае loss="modified_huber" приведено в приложении B в: http://jmlr.csail.mit.edu/papers/volume2/zhang02c/zhang02c.pdf

score(X, y, sample_weight=None)[источник]#

Возвращает точность на предоставленных данных и метках.

В многометочной классификации это точность подмножества, которая является строгой метрикой, поскольку требует для каждого образца правильного предсказания каждого набора меток.

Параметры:
Xarray-like формы (n_samples, n_features)

Тестовые выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок.

Возвращает:
scorefloat

Средняя точность self.predict(X) относительно y.

set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDClassifier[источник]#

Настроить, следует ли запрашивать передачу метаданных в fit метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются fit если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в fit.

  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
coef_initstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для coef_init параметр в fit.

intercept_initstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для intercept_init параметр в fit.

sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для sample_weight параметр в fit.

Возвращает:
selfobject

Обновленный объект.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_partial_fit_request(*, классы: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDClassifier[источник]#

Настроить, следует ли запрашивать передачу метаданных в partial_fit метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются partial_fit если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в partial_fit.

  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
классыstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для classes параметр в partial_fit.

sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для sample_weight параметр в partial_fit.

Возвращает:
selfobject

Обновленный объект.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDClassifier[источник]#

Настроить, следует ли запрашивать передачу метаданных в score метод.

Обратите внимание, что этот метод актуален только тогда, когда этот оценщик используется как под-оценщик внутри мета-оценщик и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: запрашиваются метаданные и передаются score если предоставлено. Запрос игнорируется, если метаданные не предоставлены.

  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в score.

  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.

  • str: метаданные должны передаваться мета-оценщику с этим заданным псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для некоторых параметров, но не для других.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для sample_weight параметр в score.

Возвращает:
selfobject

Обновленный объект.

разрежать()[источник]#

Преобразовать матрицу коэффициентов в разреженный формат.

Преобразует coef_ члену разреженной матрицы scipy.sparse, что для моделей с L1-регуляризацией может быть значительно более эффективным по памяти и хранению, чем обычное представление numpy.ndarray.

The intercept_ Член не преобразован.

Возвращает:
self

Обученный оценщик.

Примечания

Для неразреженных моделей, т.е. когда в coef_, это может фактически увеличить использование памяти, поэтому используйте этот метод с осторожностью. Эмпирическое правило: количество нулевых элементов, которое можно вычислить с помощью (coef_ == 0).sum(), должно быть больше 50%, чтобы это обеспечивало значительные преимущества.

После вызова этого метода дальнейшее обучение с помощью метода partial_fit (если он есть) не будет работать, пока вы не вызовете densify.