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.
Кингма, Дидерик и Джимми Ба (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
-
Объект с обновлёнными настройками.
-
Примеры из галереи
© 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