ridge_regression#

sklearn.linear_model.ridge_regression(X, y, alpha, *, sample_weight=None, solver='auto', max_iter=None, tol=0.0001, verbose=0, положительный=False, random_state=None, return_n_iter=False, return_intercept=False, check_input=True)[источник]#

Решите уравнение гребневой регрессии методом нормальных уравнений.

Подробнее в Руководство пользователя.

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

Обучающие данные.

yмассивоподобный формы (n_samples,) или (n_samples, n_targets)

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

alphafloat или array-like формы (n_targets,)

Константа, умножающая член L2, контролирующая силу регуляризации. alpha должно быть неотрицательным числом с плавающей точкой, т.е. в [0, inf).

Когда alpha = 0, цель эквивалентна обычному методу наименьших квадратов, решаемому с помощью LinearRegression объект. По численным причинам, использование alpha = 0 с Ridge объекта не рекомендуется. Вместо этого следует использовать LinearRegression объект.

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

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

Индивидуальные веса для каждой выборки. Если задано число с плавающей точкой, каждая выборка будет иметь одинаковый вес. Если sample_weight не None и solver='auto', решатель будет установлен в 'cholesky'.

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

solver{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, по умолчанию=’auto’

Решатель для использования в вычислительных процедурах:

  • 'auto' автоматически выбирает решатель на основе типа данных.

  • ‘svd’ использует сингулярное разложение X для вычисления коэффициентов Ridge. Это наиболее стабильный решатель, в частности более стабильный для сингулярных матриц, чем ‘cholesky’, за счёт более медленной работы.

  • ‘cholesky’ использует стандартную функцию scipy.linalg.solve для получения аналитического решения через разложение Холецкого dot(X.T, X)

  • ‘sparse_cg’ использует решатель сопряженных градиентов, как в scipy.sparse.linalg.cg. Как итеративный алгоритм, этот решатель более подходит, чем ‘cholesky’, для данных большого масштаба (возможность установить tol и max_iter).

  • 'lsqr' использует специализированную процедуру регуляризованных наименьших квадратов scipy.sparse.linalg.lsqr. Это самый быстрый метод, использующий итерационную процедуру.

  • 'sag' использует стохастический градиентный спуск со средним градиентом, а 'saga' использует его улучшенную, несмещенную версию под названием SAGA. Оба метода также используют итеративную процедуру и часто быстрее других решателей, когда и n_samples, и n_features велики. Обратите внимание, что быстрая сходимость 'sag' и 'saga' гарантирована только для признаков с примерно одинаковым масштабом. Вы можете предварительно обработать данные с помощью масштабатора из sklearn.preprocessing.

  • ‘lbfgs’ использует алгоритм L-BFGS-B, реализованный в scipy.optimize.minimize. Может использоваться только когда positive равно True.

Все решатели, кроме 'svd', поддерживают как плотные, так и разреженные данные. Однако только 'lsqr', 'sag', 'sparse_cg' и 'lbfgs' поддерживают разреженный ввод, когда fit_intercept равно True.

Добавлено в версии 0.17: Решатель стохастического среднего градиентного спуска.

Добавлено в версии 0.19: SAGA solver.

max_iterint, default=None

Максимальное количество итераций для сопряженного градиентного решателя. Для решателей 'sparse_cg' и 'lsqr' значение по умолчанию определяется scipy.sparse.linalg. Для решателей 'sag' и 'saga' значение по умолчанию равно 1000. Для решателя 'lbfgs' значение по умолчанию равно 15000.

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

Точность решения. Обратите внимание, что tol не имеет эффекта для решателей 'svd' и 'cholesky'.

Изменено в версии 1.2: Значение по умолчанию изменено с 1e-3 на 1e-4 для согласованности с другими линейными моделями.

verboseint, по умолчанию=0

Уровень подробности вывода. Установка verbose > 0 будет отображать дополнительную информацию в зависимости от используемого решателя.

положительныйbool, по умолчанию=False

При установке значения True, заставляет коэффициенты быть положительными. Только решатель 'lbfgs' поддерживается в этом случае.

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

Используется, когда solver == 'sag' или 'saga' для перемешивания данных. См. Глоссарий подробности.

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

Если True, метод также возвращает n_iter, фактическое количество итераций, выполненных решателем.

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

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

Если True и если X разрежен, метод также возвращает свободный член, и решатель автоматически меняется на 'sag'. Это только временное решение для обучения свободного члена с разреженными данными. Для плотных данных используйте sklearn.linear_model._preprocess_data перед вашей регрессией.

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

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

Если False, входные массивы X и y не будут проверяться.

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

Возвращает:
coefndarray формы (n_features,) или (n_targets, n_features)

Вектор(ы) весов.

n_iterint, необязательный

Фактическое количество итераций, выполненных решателем. Возвращается только если return_n_iter равно True.

interceptfloat или ndarray формы (n_targets,)

Свободный член модели. Возвращается только если return_intercept равно True и если X является разреженным массивом scipy.

Примечания

Эта функция не будет вычислять свободный член.

Регуляризация улучшает обусловленность задачи и уменьшает дисперсию оценок. Большие значения указывают на более сильную регуляризацию. Alpha соответствует 1 / (2C) в других линейных моделях, таких как LogisticRegression или LinearSVC. Если передан массив, штрафы предполагаются специфичными для целей. Следовательно, они должны соответствовать по количеству.

Примеры

>>> import numpy as np
>>> from sklearn.datasets import make_regression
>>> from sklearn.linear_model import ridge_regression
>>> rng = np.random.RandomState(0)
>>> X = rng.randn(100, 4)
>>> y = 2.0 * X[:, 0] - 1.0 * X[:, 1] + 0.1 * rng.standard_normal(100)
>>> coef, intercept = ridge_regression(X, y, alpha=1.0, return_intercept=True,
...                                    random_state=0)
>>> coef
array([ 1.97, -1., -2.69e-3, -9.27e-4 ])
>>> intercept
np.float64(-.0012)