MLPClassifier
- classsklearn.neural_network.MLPClassifier(hidden_layer_sizes=(100,), activation='relu', *, solver='adam', alpha=0.0001, batch_size='auto', learning_rate='constant', learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10, max_fun=15000)[исходный код]
-
Классификатор на основе многослойного перцептрона.
Эта модель оптимизирует функцию логарифмических потерь с помощью LBFGS или стохастического градиентного спуска.
Добавлено в версии 0.18.
- Параметры:
-
- hidden_layer_sizesarray-like of shape(n_layers - 2,), default=(100,)
-
i-й элемент обозначает количество нейронов в i-м скрытом слое.
- activation{‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, default=’relu’
-
Функция активации для скрытого слоя.
- ‘identity’ — тождественная функция активации, полезная для реализации линейного узкого места; возвращает f(x) = x
- ‘logistic’ — логистическая сигмоидальная функция; возвращает f(x) = 1 / (1 + exp(-x)).
- ‘tanh’ — гиперболический тангенс; возвращает f(x) = tanh(x).
- ‘relu’ — функция выпрямленной линейной единицы; возвращает f(x) = max(0, x)
- solver{‘lbfgs’, ‘sgd’, ‘adam’}, default=’adam’
-
Алгоритм оптимизации весов.
- ‘lbfgs’ — оптимизатор из семейства квазиньютоновских методов.
- ‘sgd’ обозначает стохастический градиентный спуск.
- ‘adam’ обозначает стохастический оптимизатор на основе градиента, предложенный Кингмой, Дидериком и Джимми Ба
Сравнение оптимизатора Adam и SGD см. в разделе Сравнение стратегий стохастического обучения для MLPClassifier.
Примечание: алгоритм оптимизации по умолчанию ‘adam’ хорошо работает с относительно большими наборами данных (с тысячами обучающих образцов или более) как с точки зрения времени обучения, так и с точки зрения оценки на валидационной выборке. Однако для небольших наборов данных ‘lbfgs’ может сходиться быстрее и работать лучше.
- alphafloat, default=0.0001
-
Сила члена L2-регуляризации. При добавлении к функции потерь член L2-регуляризации делится на размер выборки.
Пример использования и визуализацию изменения регуляризации см. в разделе Изменение регуляризации в многослойном перцептроне.
- batch_sizeint, default=’auto’
-
Размер мини-пакетов для стохастических оптимизаторов. Если используется алгоритм ‘lbfgs’, классификатор не применяет мини-пакеты. При значении “auto”
batch_size=min(200, n_samples). - learning_rate{‘constant’, ‘invscaling’, ‘adaptive’}, default=’constant’
-
Расписание скорости обучения при обновлении весов.
- ‘constant’ — постоянная скорость обучения, задаваемая параметром ‘learning_rate_init’.
- ‘invscaling’ — постепенное уменьшение скорости обучения на каждом временном шаге ‘t’ с использованием показателя обратного масштабирования ‘power_t’. effective_learning_rate = learning_rate_init / pow(t, power_t)
- ‘adaptive’ — скорость обучения остаётся равной ‘learning_rate_init’, пока функция потерь на обучающей выборке продолжает уменьшаться. Каждый раз, когда две последовательные эпохи не позволяют уменьшить функцию потерь на обучающей выборке как минимум на tol или повысить оценку на валидационной выборке как минимум на tol, если включён параметр ‘early_stopping’, текущая скорость обучения делится на 5.
Используется только при
solver='sgd'. - learning_rate_initfloat, default=0.001
-
Начальная скорость обучения. Она определяет размер шага при обновлении весов. Используется только при solver=’sgd’ или ‘adam’.
- power_tfloat, default=0.5
-
Показатель для обратного масштабирования скорости обучения. Используется для обновления эффективной скорости обучения, если learning_rate имеет значение ‘invscaling’. Используется только при solver=’sgd’.
- max_iterint, default=200
-
Максимальное количество итераций. Алгоритм оптимизации выполняет итерации до сходимости (определяемой параметром ‘tol’) или до достижения этого количества итераций. Для стохастических алгоритмов оптимизации (‘sgd’, ‘adam’) учитывайте, что этот параметр задаёт количество эпох (сколько раз будет использована каждая точка данных), а не количество шагов градиентного спуска.
- shufflebool, default=True
-
Нужно ли перемешивать образцы на каждой итерации. Используется только при solver=’sgd’ или ‘adam’.
- random_stateint, RandomState instance, default=None
-
Определяет генерацию случайных чисел для инициализации весов и смещений, разделения на обучающую и тестовую выборки при использовании ранней остановки и выборки пакетов при solver=’sgd’ или ‘adam’. Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. Глоссарий.
- tolfloat, default=1e-4
-
Допуск при оптимизации. Если функция потерь или оценка не улучшается как минимум на
tolв течениеn_iter_no_changeпоследовательных итераций, сходимость считается достигнутой и обучение останавливается, если толькоlearning_rateне установлен в ‘adaptive’. - verbosebool, default=False
-
Выводить ли сообщения о ходе выполнения в stdout.
- warm_startbool, default=False
-
Если установлено значение True, результат предыдущего вызова fit повторно используется в качестве начальной точки; в противном случае предыдущий результат удаляется. См. глоссарий.
- momentumfloat, default=0.9
-
Моментум при обновлении градиентного спуска. Значение должно находиться между 0 и 1. Используется только при solver=’sgd’.
- nesterovs_momentumbool, default=True
-
Использовать ли моментум Нестерова. Используется только при solver=’sgd’ и momentum > 0.
- early_stoppingbool, default=False
-
Использовать ли раннюю остановку для завершения обучения, если оценка на валидационной выборке не улучшается. Если установлено значение True,
validation_fractionобучающих данных автоматически выделяется в качестве валидационной выборки, а обучение завершается, если оценка на валидационной выборке не улучшается как минимум наtolв течениеn_iter_no_changeпоследовательных эпох. Разбиение стратифицированное, за исключением задач с несколькими метками. Если early_stopping имеет значение False, обучение останавливается, когда функция потерь на обучающей выборке не улучшается более чем наtolв течениеn_iter_no_changeпоследовательных проходов по обучающей выборке. Применяется только при solver=’sgd’ или ‘adam’. - validation_fractionfloat, default=0.1
-
Доля обучающих данных, выделяемая для валидационной выборки при ранней остановке. Значение должно находиться между 0 и 1. Используется, только если early_stopping имеет значение True.
- beta_1float, default=0.9
-
Коэффициент экспоненциального затухания для оценок вектора первого момента в adam; должен находиться в диапазоне [0, 1). Используется только при solver=’adam’.
- beta_2float, default=0.999
-
Коэффициент экспоненциального затухания для оценок вектора второго момента в adam; должен находиться в диапазоне [0, 1). Используется только при solver=’adam’.
- epsilonfloat, default=1e-8
-
Значение для обеспечения численной устойчивости в adam. Используется только при solver=’adam’.
- n_iter_no_changeint, default=10
-
Максимальное количество эпох без достижения улучшения
tol. Применяется только при solver=’sgd’ или ‘adam’.Добавлено в версии 0.20.
- max_funint, default=15000
-
Используется только при solver=’lbfgs’. Максимальное количество вызовов функции потерь. Алгоритм оптимизации выполняет итерации до сходимости (определяемой параметром ‘tol’), достижения числа итераций max_iter или достижения этого количества вызовов функции потерь. Учтите, что число вызовов функции потерь будет больше либо равно числу итераций для
MLPClassifier.Добавлено в версии 0.22.
- Атрибуты:
-
- classes_ndarray or list of ndarray of shape (n_classes,)
-
Метки классов для каждого выхода.
- loss_float
-
Текущее значение функции потерь, вычисленное с помощью функции потерь.
- best_loss_float or None
-
Минимальное значение функции потерь, достигнутое алгоритмом оптимизации в ходе обучения. Если
early_stopping=True, этому атрибуту присваивается значениеNone. Вместо него см. обученный атрибутbest_validation_score_. -
loss_curve_list of shape (
n_iter_,) -
i-й элемент списка содержит значение функции потерь на i-й итерации.
-
validation_scores_list of shape (
n_iter_,) or None -
Оценка на каждом шаге для отложенной валидационной выборки. В качестве оценки используется точность. Доступен только при
early_stopping=True; в противном случае атрибуту присваивается значениеNone. - best_validation_score_float or None
-
Наилучшая оценка на валидационной выборке (то есть точность), вызвавшая раннюю остановку. Доступен только при
early_stopping=True; в противном случае атрибуту присваивается значениеNone. - t_int
-
Количество обучающих образцов, обработанных алгоритмом оптимизации в ходе обучения.
- coefs_list of shape (n_layers - 1,)
-
i-й элемент списка содержит матрицу весов, соответствующую слою i.
- intercepts_list of shape (n_layers - 1,)
-
i-й элемент списка содержит вектор смещений, соответствующий слою i + 1.
- n_features_in_int
-
Количество признаков, обнаруженных при вызове fit.
Добавлено в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Названия признаков, обнаруженных при вызове fit. Определяется только в том случае, если
Xсодержит названия признаков, представленные строками.Добавлено в версии 1.0.
- n_iter_int
-
Количество итераций, выполненных алгоритмом оптимизации.
- n_layers_int
-
Количество слоёв.
- n_outputs_int
-
Количество выходов.
- out_activation_str
-
Название функции активации выходного слоя.
См. также
MLPRegressor-
Регрессор на основе многослойного перцептрона.
BernoulliRBM-
Ограниченная машина Больцмана Бернулли (RBM).
Примечания
MLPClassifier обучается итеративно: на каждом временном шаге вычисляются частные производные функции потерь по параметрам модели, которые затем обновляются.
К функции потерь также можно добавить член регуляризации, который уменьшает значения параметров модели и помогает предотвратить переобучение.
Эта реализация работает с данными, представленными в виде плотных массивов numpy или разреженных массивов scipy с числами с плавающей точкой.
Список литературы
Хинтон, Джеффри Э. «Процедуры коннекционистского обучения». Искусственный интеллект 40.1 (1989): 185–234.
Глорот, Ксавье и Ёшуа Бенджио. «Понимание трудностей обучения глубоких сетей прямого распространения». Международная конференция по искусственному интеллекту и статистике. 2010.
Кингма, Дидерик и Джимми Ба (2014). «Adam: метод стохастической оптимизации».
Примеры
>>> from sklearn.neural_network import MLPClassifier >>> from sklearn.datasets import make_classification >>> from sklearn.model_selection import train_test_split >>> X, y = make_classification(n_samples=100, random_state=1) >>> X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, ... random_state=1) >>> clf = MLPClassifier(random_state=1, max_iter=300).fit(X_train, y_train) >>> clf.predict_proba(X_test[:1]) array([[0.0383, 0.961]]) >>> clf.predict(X_test[:5, :]) array([1, 0, 1, 0, 1]) >>> clf.score(X_test, y_test) 0.8...
- fit(X, y, sample_weight=None)[исходный код]
-
Обучить модель на матрице данных X и целевых значениях y.
- Параметры:
-
- Xndarray or sparse matrix of shape (n_samples, n_features)
-
Входные данные.
- yndarray of shape (n_samples,) or (n_samples, n_outputs)
-
Целевые значения (метки классов для классификации, вещественные числа для регрессии).
- sample_weightarray-like of shape (n_samples,), default=None
-
Веса образцов.
Добавлено в версии 1.7.
- Возвращает:
-
- selfobject
-
Возвращает обученную модель MLP.
- get_metadata_routing()[исходный код]
-
Получить сведения о маршрутизации метаданных этого объекта.
Сведения о работе механизма маршрутизации см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если значение True, будут возвращены параметры этого оценщика и содержащихся в нём подобъектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Названия параметров, сопоставленные с их значениями.
- partial_fit(X, y, sample_weight=None, classes=None)[исходный код]
-
Обновить модель, выполнив одну итерацию на заданных данных.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные данные.
- yarray-like of shape (n_samples,)
-
Целевые значения.
- sample_weightarray-like of shape (n_samples,), default=None
-
Веса образцов.
Добавлено в версии 1.7.
- classesarray of shape (n_classes,), default=None
-
Классы для всех вызовов partial_fit. Их можно получить с помощью
np.unique(y_all), где y_all — целевой вектор всего набора данных. Этот аргумент обязателен при первом вызове partial_fit и может быть опущен при последующих вызовах. Обратите внимание, что y не обязательно должен содержать все метки изclasses.
- Возвращает:
-
- selfobject
-
Обученная модель MLP.
- predict(X)[исходный код]
-
Выполнить предсказание с помощью классификатора на основе многослойного перцептрона.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные данные.
- Возвращает:
-
- yndarray, shape (n_samples,) or (n_samples, n_classes)
-
Предсказанные классы.
- predict_log_proba(X)[исходный код]
-
Вернуть логарифмы оценок вероятностей.
- Параметры:
-
- Xndarray of shape (n_samples, n_features)
-
Входные данные.
- Возвращает:
-
- log_y_probndarray of shape (n_samples, n_classes)
-
Предсказанный логарифм вероятности принадлежности образца к каждому классу модели; классы упорядочены так же, как в
self.classes_. Эквивалентноlog(predict_proba(X)).
- predict_proba(X)[исходный код]
-
Оценки вероятностей.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные данные.
- Возвращает:
-
- y_probndarray of shape (n_samples, n_classes)
-
Предсказанная вероятность принадлежности образца к каждому классу модели; классы упорядочены так же, как в
self.classes_.
- score(X, y, sample_weight=None)[исходный код]
-
Вернуть точность на предоставленных данных и метках.
В классификации с несколькими метками это точность по подмножеству — строгая метрика, поскольку для каждого образца требуется правильно предсказать весь набор меток.
- Параметры:
-
- Xarray-like of shape (n_samples, n_features)
-
Тестовые образцы.
- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
-
Истинные метки для
X. - sample_weightarray-like of shape (n_samples,), default=None
-
Веса образцов.
- Возвращает:
-
- scorefloat
-
Средняя точность
self.predict(X)относительноy.
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') MLPClassifier[исходный код]
-
Настроить, следует ли запрашивать передачу метаданных методу
fit.Обратите внимание, что этот метод имеет значение только тогда, когда данный оценщик используется как вложенный оценщик в составе метаоценщика и включена маршрутизация метаданных с помощью
enable_metadata_routing=True(см.sklearn.set_config). Сведения о работе механизма маршрутизации см. в Руководстве пользователя.Для каждого параметра доступны следующие значения:
-
True: метаданные запрашиваются и передаются вfit, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется. -
False: метаданные не запрашиваются, и метаоценщик не передаёт их вfit. -
None: метаданные не запрашиваются, и метаоценщик выдаст ошибку, если пользователь их предоставит. -
str: метаданные следует передавать метаоценщику под указанным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.Добавлено в версии 1.3.
- Параметры:
-
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- set_params(**params)[исходный код]
-
Задать параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). У последних параметры имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
- set_partial_fit_request(*, classes:bool|None|str='$UNCHANGED$', sample_weight:bool|None|str='$UNCHANGED$') MLPClassifier[исходный код]
-
Настраивает, следует ли запрашивать передачу метаданных в метод
partial_fit.Обратите внимание, что этот метод имеет значение только тогда, когда данный оцениватель используется как вложенный оцениватель в составе метаоценивателя и маршрутизация метаданных включена с помощью
enable_metadata_routing=True(см.sklearn.set_config). Описание работы механизма маршрутизации см. в руководстве пользователя.Для каждого параметра доступны следующие варианты:
-
True: метаданные запрашиваются и передаются вpartial_fit, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется. -
False: метаданные не запрашиваются, и метаоцениватель не будет передавать их вpartial_fit. -
None: метаданные не запрашиваются, и метаоцениватель вызовет ошибку, если пользователь их предоставит. -
str: метаданные следует передавать метаоценивателю под указанным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменять запрос для одних параметров, не меняя его для других.Добавлено в версии 1.3.
- Параметры:
-
- classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
classesвpartial_fit. - sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвpartial_fit.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') MLPClassifier[исходный код]
-
Настраивает, следует ли запрашивать передачу метаданных в метод
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, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.neural_network.MLPClassifier.html