核岭回归#
- class sklearn.kernel_ridge.KernelRidge(alpha=1, *, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None)[source]#
核岭回归。
核岭回归 (KRR) 将岭回归(带有 L2 范数正则化的线性最小二乘法)与核技巧相结合。因此,它学习由相应的核和数据引起的空間中的线性函数。对于非线性核,这对应于原始空间中的非线性函数。
KRR学习到的模型形式与支持向量回归 (SVR) 相同。但是,它们使用了不同的损失函数:KRR 使用平方误差损失,而支持向量回归使用ε-不敏感损失,两者都结合了 l2 正则化。与 SVR 相比,拟合 KRR 模型可以用闭式解求解,并且对于中等大小的数据集通常更快。另一方面,学习到的模型是非稀疏的,因此在预测时比 SVR(对于 ε > 0 学习稀疏模型)慢。
此估计器内置支持多元回归(即,当 y 是形状为 [n_samples, n_targets] 的二维数组时)。
更多信息请参见 用户指南。
- 参数:
- alpha浮点数或形状为 (n_targets,) 的类数组,默认为 1.0
正则化强度;必须是正浮点数。正则化改善问题的条件并减少估计值的方差。较大的值指定更强的正则化。Alpha 对应于其他线性模型(如
LogisticRegression
或LinearSVC
)中的1 / (2C)
。如果传递数组,则假定惩罚特定于目标。因此,它们的个数必须对应。有关公式,请参见 岭回归和分类。- kernel字符串或可调用对象,默认为“linear”
内部使用的核映射。此参数直接传递给
pairwise_kernels
。如果kernel
是字符串,则它必须是pairwise.PAIRWISE_KERNEL_FUNCTIONS
中的度量之一或“precomputed”。如果kernel
是“precomputed”,则假定 X 是核矩阵。或者,如果kernel
是可调用函数,则它会在每一对实例(行)上调用,并将结果值记录下来。可调用对象应将 X 中的两行作为输入,并将相应的核值作为单个数字返回。这意味着不允许使用sklearn.metrics.pairwise
中的可调用对象,因为它们作用于矩阵,而不是单个样本。请改用标识核的字符串。- gamma浮点数,默认为 None
用于 RBF、拉普拉斯、多项式、指数 χ² 和 sigmoid 核的 Gamma 参数。默认值的解释留给核函数;请参见 sklearn.metrics.pairwise 的文档。其他核函数忽略此参数。
- degree浮点数,默认为 3
多项式核的度数。其他核函数忽略此参数。
- coef0浮点数,默认为 1
多项式和 sigmoid 核的零系数。其他核函数忽略此参数。
- kernel_params字典,默认为 None
作为可调用对象传递的核函数的其他参数(关键字参数)。
- 属性:
- dual_coef_形状为 (n_samples,) 或 (n_samples, n_targets) 的 ndarray
核空间中权重向量(矢量)的表示
- X_fit_形状为 (n_samples, n_features) 的 {ndarray,稀疏矩阵}
训练数据,预测也需要此数据。如果 kernel == “precomputed”,则改为形状为 (n_samples, n_samples) 的预计算训练矩阵。
- n_features_in_整数
在 拟合 期间看到的特征数量。
在 0.24 版本中添加。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在 拟合 期间看到的特征名称。仅当
X
具有全是字符串的特征名称时才定义。在 1.0 版本中添加。
另请参见
sklearn.gaussian_process.GaussianProcessRegressor
高斯过程回归器,提供自动核超参数调整和预测不确定性。
sklearn.linear_model.Ridge
线性岭回归。
sklearn.linear_model.RidgeCV
具有内置交叉验证的岭回归。
sklearn.svm.SVR
支持向量回归,接受各种各样的核函数。
参考文献
Kevin P. Murphy “机器学习:概率视角”,麻省理工学院出版社第 14.4.3 章,第 492-493 页
示例
>>> from sklearn.kernel_ridge import KernelRidge >>> import numpy as np >>> n_samples, n_features = 10, 5 >>> rng = np.random.RandomState(0) >>> y = rng.randn(n_samples) >>> X = rng.randn(n_samples, n_features) >>> krr = KernelRidge(alpha=1.0) >>> krr.fit(X, y) KernelRidge(alpha=1.0)
- fit(X, y, sample_weight=None)[source]#
拟合核岭回归模型。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组,稀疏矩阵}
训练数据。如果 kernel == “precomputed”,则改为形状为 (n_samples, n_samples) 的预计算核矩阵。
- y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组
目标值。
- sample_weight浮点数或形状为 (n_samples,) 的类数组,默认为 None
每个样本的个体权重,如果传递 None 则忽略。
- 返回值:
- self对象
返回实例本身。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回值:
- routingMetadataRequest
封装路由信息的
MetadataRequest
。
- get_params(deep=True)[source]#
获取该估计器的参数。
- 参数:
- deep布尔值,默认为True
如果为 True,则将返回此估计器及其包含的子对象(也是估计器)的参数。
- 返回值:
- params字典
参数名称与其值的映射。
- predict(X)[source]#
使用核岭回归模型进行预测。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组,稀疏矩阵}
样本。如果 kernel == “precomputed”,则它是一个预计算的核矩阵,形状为 [n_samples, n_samples_fitted],其中 n_samples_fitted 是此估计器拟合中使用的样本数。
- 返回值:
- C形状为 (n_samples,) 或 (n_samples, n_targets) 的ndarray
返回预测值。
- score(X, y, sample_weight=None)[source]#
返回预测的决定系数。
决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 是总平方和((y_true - y_true.mean()) ** 2).sum()
。最佳分数为 1.0,也可能为负值(因为模型可以任意差)。一个始终预测y
期望值的常数模型(忽略输入特征)将获得 0.0 的 \(R^2\) 分数。- 参数:
- X形状为 (n_samples, n_features) 的类数组
测试样本。对于某些估计器,这可能是一个预计算的核矩阵,或者是一个形状为
(n_samples, n_samples_fitted)
的泛型对象列表,其中n_samples_fitted
是估计器拟合中使用的样本数。- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组
X
的真实值。- sample_weight形状为 (n_samples,) 的类数组,默认为 None
样本权重。
- 返回值:
- score浮点数
self.predict(X)
关于y
的 \(R^2\)。
注释
从 0.23 版本开始,在回归器上调用
score
时使用的 \(R^2\) 分数使用multioutput='uniform_average'
,以保持与r2_score
的默认值一致。这会影响所有多输出回归器的score
方法(MultiOutputRegressor
除外)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KernelRidge [source]#
请求传递给
fit
方法的元数据。请注意,只有在
enable_metadata_routing=True
时(请参阅sklearn.set_config
)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供元数据,则元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求,而不会更改其他参数的请求。1.3 版本中新增。
注释
此方法仅当该估计器用作元估计器的子估计器时才相关,例如,在
Pipeline
中使用。否则,它无效。- 参数:
- sample_weightstr、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
fit
方法中sample_weight
参数的元数据路由。
- 返回值:
- self对象
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单的估计器以及嵌套对象(例如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计器参数。
- 返回值:
- self估计器实例
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KernelRidge [source]#
请求传递给
score
方法的元数据。请注意,只有在
enable_metadata_routing=True
时(请参阅sklearn.set_config
)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则将其传递给score
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给score
。None
:不请求元数据,如果用户提供元数据,则元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求,而不会更改其他参数的请求。1.3 版本中新增。
注释
此方法仅当该估计器用作元估计器的子估计器时才相关,例如,在
Pipeline
中使用。否则,它无效。- 参数:
- sample_weightstr、True、False 或 None,默认值=sklearn.utils.metadata_routing.UNCHANGED
score
方法中sample_weight
参数的元数据路由。
- 返回值:
- self对象
更新后的对象。