Spec-Zone.ru › scikit-learn

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.

Хе, Кайминг и др. (2015). «Подробное изучение выпрямителей: достижение сверхчеловеческих результатов в классификации изображений ImageNet».

Кингма, Дидерик и Джимми Ба (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

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

Примеры из галереи

Сравнение классификаторов

Изменение регуляризации многослойного перцептрона

Сравнение стратегий стохастического обучения для MLPClassifier

Визуализация весов MLP на MNIST

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API