ridge_regression#

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)[源代码]#

用法向方程的方法求解山脊方程。

阅读更多的 User Guide .

参数:
X形状的{类数组,稀疏矩阵,线性运算符} (n_samples,n_features)

训练数据。

y形状类似阵列(n_samples,)或(n_samples,n_targets)

目标值。

alpha形状的浮动或类数组(n_targets,)

乘以L2项的常数,控制规则化强度。 alpha 必须是非负浮动,即在 [0, inf) .

alpha = 0 ,目标等效于普通最小平方,由 LinearRegression object.由于数字原因,使用 alpha = 0Ridge 不建议对象。相反,您应该使用 LinearRegression object.

如果传递数组,则假定惩罚特定于目标。因此,它们必须在数量上相对应。

sample_weightfloat或类似数组的形状(n_samples,),默认值=None

每个样本的单独重量。如果给予漂浮物,每个样本的重量都相同。如果sample_weight不为无且solver =' Auto ',则解算器将设置为'。

Added in version 0.17.

solver' Auto ',' svd ',',',', ' sag ',' lbfs '},默认='自动'

在计算例程中使用的求解器:

  • “Auto”根据数据类型自动选择求解器。

  • “svd”使用X的奇异值分解来计算岭系数。它是最稳定的求解器,特别是对于奇异矩阵来说比“不稳定”更稳定,但代价是速度更慢。

  • 'Cholesky'使用标准的scipy.linalg.solve函数通过点(X.T,X)的Cholesky分解获得封闭形式的解

  • “sparse_cg”使用scipy.sparse.linalg.cg中找到的共乘梯度求解器。作为一种迭代算法,该求解器比“Skopky”更适合大规模数据(可以设置 tolmax_iter ).

  • “lsqur”使用专用的正规化最小平方例程scipy.sparse.linalg.lsqur。它是最快的,并且使用迭代过程。

  • 'sag'使用随机平均梯度下降,'saga'使用其改进的无偏版本SAGA。这两种方法都使用迭代过程,并且当n_samples和n_features都很大时,通常比其他求解器更快。请注意,“sag”和“saga”快速收敛仅在具有大致相同比例的特征上得到保证。您可以使用sklearn.preprocessing中的缩放器对数据进行预处理。

  • “lbfgs”使用L-BFSG-B算法 scipy.optimize.minimize .只有在以下情况下才能使用 positive 是真的

除“svd”外的所有求解器都支持密集和稀疏数据。然而,只有“lsqur”、“sag”、“sparse_cg”和“lbfgs”支持稀疏输入, fit_intercept 是真的

Added in version 0.17: 随机平均梯度下降解算器。

Added in version 0.19: SAGA求解器。

max_iterint,默认=无

共轨梯度求解器的最大迭代次数。对于“sparse_cg”和“lsqur”解算器,默认值由scipy.sparse.linalg确定。对于“sag”和saga求解器,默认值为1000。对于“lbfgs”解算器,默认值为15000。

tolfloat,默认= 1 e-4

溶液的精密度。注意 tol 对解算器“sVD”和“spoky”没有影响。

在 1.2 版本发生变更: 默认值从1 e-3更改为1 e-4,以与其他线性模型保持一致。

verboseint,默认=0

冗长级别。将详细设置' 0将根据使用的求解器显示附加信息。

positive布尔,默认=假

如果设置为 True ,强制系数为正。这种情况下仅支持“lbfgs”求解器。

random_stateint,RandomState实例,默认=无

时使用 solver ==“sag”或“saga”来洗牌数据。看到 Glossary 有关详细信息

return_n_iter布尔,默认=假

如果为True,该方法也会返回 n_iter ,求解器执行的实际迭代次数。

Added in version 0.17.

return_intercept布尔,默认=假

如果True并且X是稀疏的,则该方法还会返回截取,并且求解器会自动更改为“sag”。这只是用稀疏数据匹配拦截的临时修复方案。对于密集数据,请使用sklearn.linear_models._在回归之前预处理_data。

Added in version 0.17.

check_input布尔,默认=True

如果为假,则不会检查输入数组X和y。

Added in version 0.21.

返回:
coef形状的nd数组(n_features,)或(n_targets,n_features)

权重载体。

n_iterint,可选

求解器执行的实际迭代次数。只有在以下情况下才返回 return_n_iter 是真的

intercept形状的float或ndray(n_targets,)

模型的拦截。只有在以下情况下才返回 return_intercept 是True,如果X是scipy稀疏数组。

注意到

此函数不会计算拦截。

正规化改进了问题的条件条件并减少了估计的方差。值越大,规范化越强。Alpha对应于 1 / (2C) 在其他线性模型中, LogisticRegressionLinearSVC .如果传递数组,则假定惩罚特定于目标。因此,它们必须在数量上相对应。

示例

>>> 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...)