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)