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 = 0
与Ridge
不建议对象。相反,您应该使用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”更适合大规模数据(可以设置
tol
和max_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)
在其他线性模型中,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) >>> list(coef) [np.float64(1.9...), np.float64(-1.0...), np.float64(-0.0...), np.float64(-0.0...)] >>> intercept np.float64(-0.0...)