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)[source]

Многослойный перцептрон-классификатор.

Эта модель оптимизирует функцию логарифмической ошибки с использованием LBFGS или стохастического градиентного спуска.

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

Параметры:
hidden_layer_sizesмассив-подобный формы (n_layers - 2,), по умолчанию=(100,)

i-й элемент представляет количество нейронов в i-м скрытом слое.

activation{‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, по умолчанию=’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’}, по умолчанию=’adam’

Решатель для оптимизации весов.

  • ‘lbfgs’ — оптимизатор из семейства квази-ньютоновских методов.
  • ‘sgd’ относится к стохастическому градиентному спуску.
  • ‘adam’ относится к стохастическому оптимизатору на основе градиента, предложенному Kingma, Diederik, и Jimmy Ba

Для сравнения между оптимизаторами Adam и SGD см. Сравнение стратегий стохастического обучения для MLPClassifier.

Примечание: по умолчанию решатель ‘adam’ работает довольно хорошо на относительно больших наборах данных (с тысячами или более обучающих примеров) с точки зрения времени обучения и оценки валидации. Однако для небольших наборов данных ‘lbfgs’ может сходиться быстрее и работать лучше.

alphaвещественное число, по умолчанию=0.0001

Сила члена регуляризации L2. Член регуляризации L2 делится на размер выборки при добавлении к функции потерь.

Для примера использования и визуализации различных значений регуляризации см. Изменение регуляризации в многослойном перцептроне.

batch_sizeцелое число, по умолчанию=’auto’

Размер мини-пакетов для стохастических оптимизаторов. Если решатель — ‘lbfgs’, классификатор не будет использовать мини-пакеты. Если установлено значение «auto», batch_size=min(200, n_samples).

learning_rate{‘constant’, ‘invscaling’, ‘adaptive’}, по умолчанию=’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_initвещественное число, по умолчанию=0.001

Начальная скорость обучения, используемая. Она управляет шагом при обновлении весов. Используется только при solver=’sgd’ или ‘adam’.

power_tвещественное число, по умолчанию=0.5

Показатель для обратного масштабирования скорости обучения. Используется при обновлении эффективной скорости обучения, когда learning_rate установлено в ‘invscaling’. Используется только при solver=’sgd’.

max_iterцелое число, по умолчанию=200

Максимальное количество итераций. Решатель итеративно выполняет операции до сходимости (определяется ‘tol’) или этого количества итераций. Для стохастических решателей (‘sgd’, ‘adam’) обратите внимание, что это определяет количество эпох (сколько раз каждый элемент данных будет использован), а не количество шагов градиента.

shuffleлогическое значение, по умолчанию=True

Перемешивать ли образцы в каждой итерации. Используется только при solver=’sgd’ или ‘adam’.

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

Определяет генерацию случайных чисел для инициализации весов и смещений, разделения на обучающую и тестовую выборки, если используется раннее прекращение, и выборки пакетов при solver=’sgd’ или ‘adam’. Передайте целое число для воспроизводимых результатов при нескольких вызовах функций. См. Словарь.

tolвещественное число, по умолчанию=1e-4

Допуск для оптимизации. Когда значение функции потерь или оценка не улучшается не менее чем на tol в течение n_iter_no_change последовательных итераций, если learning_rate не установлено в ‘adaptive’, считается, что достигнута сходимость, и обучение останавливается.

verboseлогическое значение, по умолчанию=False

Выводить ли сообщения о прогрессе в стандартный вывод.

warm_startлогическое значение, по умолчанию=False

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

momentumвещественное число, по умолчанию=0.9

Импульс для обновления градиентного спуска. Должно быть в диапазоне от 0 до 1. Используется только при solver=’sgd’.

nesterovs_momentumлогическое значение, по умолчанию=True

Использовать ли импульс Нестерова. Используется только при solver=’sgd’ и momentum > 0.

early_stoppingлогическое значение, по умолчанию=False

Использовать ли раннее прекращение для остановки обучения, когда оценка валидации не улучшается. Если установлено в true, 10% обучающих данных автоматически отводятся для валидации, и обучение останавливается, когда оценка валидации не улучшается не менее чем на tol в течение n_iter_no_change последовательных эпох. Разделение стратифицировано, за исключением случая многозначного значения метки. Если раннее прекращение выключено, обучение останавливается, когда функция потерь обучения не улучшается более чем на tol в течение n_iter_no_change последовательных проходов по обучающему набору. Эффективно только при solver=’sgd’ или ‘adam’.

validation_fractionвещественное число, по умолчанию=0.1

Пропорция обучающих данных, отводимых для валидации при раннем прекращении. Должно быть между 0 и 1. Используется только при early_stopping=True.

beta_1вещественное число, по умолчанию=0.9

Экспоненциальный коэффициент затухания для оценок первого момента вектора в adam, должно быть в [0, 1). Используется только при solver=’adam’.

beta_2вещественное число, по умолчанию=0.999

Экспоненциальный коэффициент затухания для оценок второго момента вектора в adam, должно быть в [0, 1). Используется только при solver=’adam’.

epsilonвещественное число, по умолчанию=1e-8

Значение для обеспечения числовой устойчивости в adam. Используется только при solver=’adam’.

n_iter_no_changeцелое число, по умолчанию=10

Максимальное количество эпох без улучшения tol. Эффективно только при solver=’sgd’ или ‘adam’.

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

max_funцелое число, по умолчанию=15000

Используется только при solver=’lbfgs’. Максимальное число вызовов функции потерь. Решатель итеративно выполняет операции до сходимости (определяется ‘tol’), количество итераций достигает max_iter, или это число вызовов функции потерь. Обратите внимание, что число вызовов функции потерь будет больше или равно числу итераций для MLPClassifier.

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

Атрибуты:
classes_ndarray или список ndarray формы (n_классов,)

Метки классов для каждого выхода.

loss_float

Текущая потеря, вычисленная с помощью функции потерь.

best_loss_float или None

Минимальная потеря, достигнутая решающим алгоритмом во время обучения. Если early_stopping=True, это свойство устанавливается в None. Обратитесь к свойству best_validation_score_ fitted вместо этого.

loss_curve_список формы (n_iter_,)

i-й элемент в списке представляет потерю на i-й итерации.

validation_scores_список формы (n_iter_,) или None

Оценка на каждой итерации на тестовом наборе. Сообщаемая оценка — это точность. Доступно только, если early_stopping=True, в противном случае свойство устанавливается в None.

best_validation_score_float или None

Лучшая оценка на валидации (т. е. точность), которая привела к остановке обучения. Доступно только, если early_stopping=True, в противном случае свойство устанавливается в None.

t_int

Количество обучающих примеров, обработанных решающим алгоритмом во время обучения.

coefs_список формы (n_слоев - 1,)

i-й элемент в списке представляет матрицу весов, соответствующую слою i.

intercepts_список формы (n_слоев - 1,)

i-й элемент в списке представляет вектор смещений, соответствующий слою i + 1.

n_features_in_int

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

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

feature_names_in_ndarray формы (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.038..., 0.961...]])
>>> clf.predict(X_test[:5, :])
array([1, 0, 1, 0, 1])
>>> clf.score(X_test, y_test)
0.8...
fit(X, y)[source]

Обучение модели на матрице данных X и целевых значениях y.

Параметры:
Xndarray или разреженная матрица формы (n_примеров, n_признаков)

Входные данные.

yndarray формы (n_примеров,) или (n_примеров, n_выходов)

Целевые значения (метки классов в классификации, вещественные числа в регрессии).

Возвращает:
selfобъект

Возвращает обученную модель MLP.

get_metadata_routing()[source]

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

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

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

MetadataRequest, содержащий информацию о маршрутизации.

get_params(deep=True)[source]

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

Параметры:
deepbool, по умолчанию=True

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

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

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

partial_fit(X, y, classes=None)[source]

Обновить модель с помощью одной итерации по заданным данным.

Параметры:
X{array-like, разреженная матрица} формы (n_примеров, n_признаков)

Входные данные.

yarray-like формы (n_примеров,)

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

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

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

Возвращает:
selfобъект

Обученная модель MLP.

predict(X)[source]

Предсказание с помощью классификатора многослойного перцептрона.

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Возвращаемые значения:
yмассив, формы (n_samples,) или (n_samples, n_classes)

Предсказанные классы.

predict_log_proba(X)[source]

Возвращает логарифм оценок вероятностей.

Параметры:
Xмассив формы (n_samples, n_features)

Входные данные.

Возвращаемые значения:
log_y_probмассив формы (n_samples, n_classes)

Предсказанный логарифм вероятности выборки для каждого класса в модели, где классы упорядочены так же, как и в self.classes_. Эквивалентно log(predict_proba(X)).

predict_proba(X)[source]

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

Параметры:
X{массив, разреженная матрица} формы (n_samples, n_features)

Входные данные.

Возвращаемые значения:
y_probмассив формы (n_samples, n_classes)

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

score(X, y, sample_weight=None)[source]

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

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

Параметры:
Xмассив формы (n_samples, n_features)

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

yмассив формы (n_samples,) или (n_samples, n_outputs)

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

sample_weightмассив формы (n_samples,), по умолчанию=None

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

Возвращаемые значения:
scorefloat

Средняя точность self.predict(X) по отношению к y.

set_params(**params)[source]

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

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

Параметры:
**paramsсловарь

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

Возвращаемые значения:
selfэкземпляр оценщика

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

set_partial_fit_request(*, classes:bool|None|str='$UNCHANGED$') → MLPClassifier[source]

Запрос метаданных, переданных методу partial_fit.

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

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

  • True: метаданные запрашиваются и передаются partial_fit при наличии. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и мета-оценщик не передаст их partial_fit.
  • None: метаданные не запрашиваются, и мета-оценщик выведет ошибку, если пользователь их предоставит.
  • str: метаданные должны передаваться мета-оценщику с данным псевдонимом вместо оригинального имени.

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

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

Примечание

Этот метод актуален только если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает никакого влияния.

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

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

Возвращаемые значения:
selfобъект

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → MLPClassifier[source]

Запрос метаданных, передаваемых методу score.

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

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

  • True: метаданные запрашиваются и передаются методу score при их наличии. Запрос игнорируется, если метаданные отсутствуют.
  • False: метаданные не запрашиваются, и мета-оценщик не передаст их методу score.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь предоставит их.
  • str: метаданные должны быть переданы мета-оценщику с данным псевдонимом вместо исходного имени.

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

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

Примечание

Этот метод актуален только в том случае, если данный оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

Объект с обновлёнными настройками.

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

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

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

Изменение параметра регуляризации в Multi-layer Perceptron

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

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.neural_network.MLPClassifier.html

Spec-Zone.ru

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