MLPRegressor#

класс sklearn.neural_network.MLPRegressor(потеря='squared_error', hidden_layer_sizes=(100,), активация='relu', *, solver='adam', alpha=0.0001, batch_size='auto', learning_rate='constant', learning_rate_init=0.001, power_t=0.5, max_iter=200, перемешивание=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, эпсилон=1e-08, n_iter_no_change=10, max_fun=15000)[источник]#

Многослойный перцептрон-регрессор.

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

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

Параметры:
потеря{‘squared_error’, ‘poisson’}, по умолчанию=’squared_error’

Функция потерь для использования при обучении весов. Обратите внимание, что потери "squared error" и "poisson" фактически реализуют "half squares error" и "half poisson deviance" для упрощения вычисления градиента. Кроме того, потери "poisson" внутренне используют log-link (экспоненциальную функцию в качестве выходной функции активации) и требуют y >= 0.

Изменено в версии 1.7: Добавлен параметр loss и опция ‘poisson’.

hidden_layer_sizesarray-like формы (n_layers - 2,), по умолчанию=(100,)

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

активация{'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’}, по умолчанию=’adam’

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

  • 'lbfgs' — это оптимизатор из семейства квазиньютоновских методов.

  • 'sgd' относится к стохастическому градиентному спуску.

  • ‘adam’ относится к стохастическому оптимизатору на основе градиента, предложенному Kingma, Diederik, and Jimmy Ba

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

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

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

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

batch_sizeint, по умолчанию='auto'

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

learning_rate{'constant', 'invscaling', 'adaptive'}, по умолчанию='constant'

Расписание скорости обучения для обновления весов.

  • 'constant' — постоянная скорость обучения, заданная 'learning_rate_init'.

  • ‘invscaling’ постепенно уменьшает скорость обучения learning_rate_ на каждом временном шаге ‘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, по умолчанию=0.001

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

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

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

max_iterint, default=200

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

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

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

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

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

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

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

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

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

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

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

momentumfloat, default=0.9

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

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

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

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

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

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

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

beta_1float, default=0.9

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

beta_2float, по умолчанию=0.999

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

эпсилонfloat, по умолчанию=1e-8

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

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

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

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

max_funint, по умолчанию=15000

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

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

Атрибуты:
loss_float

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

best_loss_float

Минимальная потеря, достигнутая решателем в процессе обучения. Если early_stopping=True, этот атрибут установлен в None. См. best_validation_score_ атрибут fitted вместо этого. Доступен только при solver=’sgd’ или ‘adam’.

loss_curve_4. Маршрутизация метаданныхn_iter_,)

Значение потерь, вычисленное в конце каждого шага обучения. Элемент i в списке представляет потери на итерации i. Доступно только при solver='sgd' или 'adam'.

validation_scores_4. Маршрутизация метаданныхn_iter_,) или None

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

best_validation_score_float или None

Лучшая оценка валидации (т.е. R2 оценка), которая вызвала раннюю остановку. Доступно только если early_stopping=True, иначе атрибут устанавливается в None. Доступно только при solver='sgd' или 'adam'.

t_int

Количество обучающих выборок, обработанных решателем во время обучения. Математически равно n_iters * X.shape[0], это означает time_step и используется планировщиком скорости обучения оптимизатора.

coefs_список формы (n_layers - 1,)

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

intercepts_список формы (n_layers - 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

Название выходной функции активации.

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

BernoulliRBM

Бернуллиевская ограниченная машина Больцмана (RBM).

MLPClassifier

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

sklearn.linear_model.SGDRegressor

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

Примечания

MLPRegressor обучается итеративно, поскольку на каждом временном шаге вычисляются частные производные функции потерь по параметрам модели для обновления параметров.

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

Эта реализация работает с данными, представленными в виде плотных и разреженных массивов numpy значений с плавающей точкой.

Ссылки

Hinton, Geoffrey E. “Connectionist learning procedures.” Artificial intelligence 40.1 (1989): 185-234.

Glorot, Xavier, and Yoshua Bengio. “Understanding the difficulty of training deep feedforward neural networks.” International Conference on Artificial Intelligence and Statistics. 2010.

He, Kaiming, et al (2015). "Delving deep into rectifiers: Surpassing human-level performance on imagenet classification."

Kingma, Diederik, и Jimmy Ba (2014) «Adam: метод стохастической оптимизации.»

Примеры

>>> from sklearn.neural_network import MLPRegressor
>>> from sklearn.datasets import make_regression
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(n_samples=200, n_features=20, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=1)
>>> regr = MLPRegressor(random_state=1, max_iter=2000, tol=0.1)
>>> regr.fit(X_train, y_train)
MLPRegressor(max_iter=2000, random_state=1, tol=0.1)
>>> regr.predict(X_test[:2])
array([  28.98, -291])
>>> regr.score(X_test, y_test)
0.98
fit(X, y, sample_weight=None)[источник]#

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

Параметры:
Xndarray или разреженная матрица формы (n_samples, n_features)

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

yndarray формы (n_samples,) или (n_samples, n_outputs)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

yndarray формы (n_samples,)

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

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

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

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

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

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

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

Прогнозирование с использованием модели многослойного перцептрона.

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

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

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

Предсказанные значения.

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

Возвращает коэффициент детерминации на тестовых данных.

Коэффициент детерминации, \(R^2\), определяется как \((1 - \frac{u}{v})\), где \(u\) является остаточной суммой квадратов ((y_true - y_pred)** 2).sum() и \(v\) является общей суммой квадратов ((y_true - y_true.mean()) ** 2).sum()Лучший возможный результат - 1.0, и он может быть отрицательным (потому что модель может быть сколь угодно хуже). Постоянная модель, которая всегда предсказывает ожидаемое значение y, игнорируя входные признаки, получит \(R^2\) оценка 0.0.

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

Тестовые выборки. Для некоторых оценщиков это может быть предварительно вычисленная матрица ядра или список общих объектов вместо этого с формой (n_samples, n_samples_fitted), где n_samples_fitted — это количество образцов, использованных при обучении оценщика.

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

Истинные значения для X.

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

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

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

\(R^2\) of self.predict(X) относительно y.

Примечания

The \(R^2\) оценка, используемая при вызове score на регрессоре использует multioutput='uniform_average' с версии 0.23 для сохранения согласованности со значением по умолчанию r2_score. Это влияет на score метод всех многомерных регрессоров (кроме MultiOutputRegressor).

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

Настроить, следует ли запрашивать передачу метаданных в 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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настроить, следует ли запрашивать передачу метаданных в 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

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