岭回归#
- sklearn.linear_model.ridge_regression(X, y, alpha, *, sample_weight=None, solver='auto', max_iter=None, tol=0.0001, verbose=0, positive=False, random_state=None, return_n_iter=False, return_intercept=False, check_input=True)[source]#
- 使用正规方程法求解岭回归方程。 - 更多信息请参见 用户指南。 - 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix, LinearOperator}
- 训练数据。 
- y形状为 (n_samples,) 或 (n_samples, n_targets) 的 array-like
- 目标值。 
- alpha浮点数或形状为 (n_targets,) 的 array-like
- 乘以 L2 项的常数,控制正则化强度。 - alpha必须是非负浮点数,即在- [0, inf)范围内。- 当 - alpha = 0时,目标等效于普通最小二乘法,由- LinearRegression对象求解。出于数值原因,建议不要使用- alpha = 0与- Ridge对象。相反,你应该使用- LinearRegression对象。- 如果传递数组,则假定惩罚针对目标值是特定的。因此,它们的个数必须对应。 
- sample_weight浮点数或形状为 (n_samples,) 的 array-like,默认为 None
- 每个样本的个体权重。如果给定浮点数,则每个样本将具有相同的权重。如果 sample_weight 不为 None 且 solver='auto',则求解器将设置为 'cholesky'。 - 版本 0.17 中新增。 
- solver{'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga', 'lbfgs'},默认为 'auto'
- 在计算程序中使用的求解器 - ‘auto’ 根据数据类型自动选择求解器。 
- ‘svd’ 使用 X 的奇异值分解来计算岭系数。它是最稳定的求解器,特别是对于奇异矩阵比 ‘cholesky’ 更稳定,但速度较慢。 
- ‘cholesky’ 使用标准的 scipy.linalg.solve 函数通过 dot(X.T, X) 的 Cholesky 分解获得闭式解。 
- ‘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’ 使用在 - scipy.optimize.minimize中实现的 L-BFGS-B 算法。仅当- positive为 True 时才能使用。
 - 除 ‘svd’ 之外的所有求解器都支持密集数据和稀疏数据。但是,只有 ‘lsqr’,‘sag’,‘sparse_cg’ 和 ‘lbfgs’ 在 - fit_intercept为 True 时支持稀疏输入。- 版本 0.17 中新增:随机平均梯度下降求解器。 - 版本 0.19 中新增:SAGA 求解器。 
- max_iterint,默认为 None
- 共轭梯度求解器的最大迭代次数。对于 ‘sparse_cg’ 和 ‘lsqr’ 求解器,默认值由 scipy.sparse.linalg 确定。对于 ‘sag’ 和 saga 求解器,默认值为 1000。对于 ‘lbfgs’ 求解器,默认值为 15000。 
- tolfloat,默认为 1e-4
- 解的精度。请注意,对于求解器 ‘svd’ 和 ‘cholesky’, - tol无效。- 版本 1.2 中更改:为与其他线性模型保持一致,默认值从 1e-3 更改为 1e-4。 
- verboseint,默认为 0
- 详细程度级别。设置 verbose > 0 将根据使用的求解器显示其他信息。 
- positivebool,默认为 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 中新增。 
 
- 返回值:
- coef形状为 (n_features,) 或 (n_targets, n_features) 的 ndarray
- 权重向量。 
- n_iterint,可选
- 求解器执行的实际迭代次数。仅当 - return_n_iter为 True 时返回。
- intercept浮点数或形状为 (n_targets,) 的 ndarray
- 模型的截距。仅当 - return_intercept为 True 且 X 为 scipy 稀疏数组时返回。
 
 - 注释 - 此函数不会计算截距。 - 正则化提高了问题的条件数并降低了估计值的方差。较大的值指定更强的正则化。Alpha 对应于其他线性模型(例如 - LogisticRegression或- LinearSVC)中的- 1 / (2C)。如果传递数组,则假定惩罚针对目标是特定的。因此,它们的数量必须一致。- 示例 - >>> 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) >>> list(coef) [np.float64(1.9...), np.float64(-1.0...), np.float64(-0.0...), np.float64(-0.0...)] >>> intercept np.float64(-0.0...) 
