RANSACRegressor#

sklearn.linear_model.RANSACRegressor(estimator=None, *, min_samples=None, residual_threshold=None, is_data_valid=None, is_model_valid=None, max_trials=100, max_skips=inf, stop_n_inliers=inf, stop_score=inf, stop_probability=0.99, loss='absolute_error', random_state=None)[源码]#

RANSAC (RANdom SAmple Consensus) 算法。

RANSAC 是一个迭代算法,用于从完整数据集的内点子集中稳健地估计参数。

更多信息请参阅用户指南

参数:
estimatorobject, default=None

实现以下方法的基估计器对象

  • fit(X, y): 将模型拟合到给定的训练数据和目标值。

  • score(X, y): 返回给定测试数据上的平均准确度,该准确度用于由stop_score定义的停止准则。此外,分数还用于决定在两个同样大小的共识集中选择哪一个作为更好的。

  • predict(X): 使用线性模型返回预测值,该值用于使用损失函数计算残差。

如果estimator为 None,则LinearRegression用于 dtype 为 float 的目标值。

请注意,当前实现仅支持回归估计器。

min_samplesint (>= 1) 或 float ([0, 1]),默认为 None

从原始数据中随机选择的最小样本数。当min_samples >= 1时,被视为绝对样本数,当min_samples < 1时,被视为相对样本数ceil(min_samples * X.shape[0])。这通常被选为估计给定estimator所需的最小样本数。默认情况下,假定使用LinearRegression估计器,并且min_samples被选为X.shape[1] + 1。此参数高度依赖于模型,因此如果使用LinearRegression以外的estimator,用户必须提供一个值。

residual_thresholdfloat,默认为 None

数据样本被分类为内点的最大残差。默认情况下,阈值被选为目标值y的 MAD(中位数绝对偏差)。残差严格等于阈值的点被视为内点。

is_data_valid可调用对象,默认为 None

在模型拟合之前,此函数将使用随机选择的数据调用:is_data_valid(X, y)。如果其返回值为 False,则跳过当前随机选择的子样本。

is_model_valid可调用对象,默认为 None

此函数将使用估计模型和随机选择的数据调用:is_model_valid(model, X, y)。如果其返回值为 False,则跳过当前随机选择的子样本。使用此函数拒绝样本比使用is_data_valid的计算成本更高。is_model_valid因此,只有在需要估计模型来做出拒绝决策时才应使用。

max_trialsint,默认为 100

随机样本选择的最大迭代次数。

max_skipsint,默认为 np.inf

由于发现零内点或由is_data_valid定义为无效数据,或者由is_model_valid定义为无效模型而可以跳过的最大迭代次数。

Added in version 0.19.

stop_n_inliersint,默认为 np.inf

如果找到至少此数量的内点,则停止迭代。

stop_scorefloat,默认为 np.inf

如果分数大于或等于此阈值,则停止迭代。

stop_probabilityfloat,范围 [0, 1],默认为 0.99

如果在 RANSAC 中至少采样到一个无异常值的训练数据集,则 RANSAC 迭代停止。这需要生成至少 N 个样本(迭代次数)

N >= log(1 - probability) / log(1 - e**m)

其中概率(置信度)通常设置为高值,例如 0.99(默认值),e 是当前内点占总样本数的比例。

lossstr,可调用对象,默认为 'absolute_error'

支持字符串输入 'absolute_error' 和 'squared_error',它们分别计算每个样本的绝对误差和平方误差。

如果loss是一个可调用对象,它应该是一个接受两个数组作为输入(真实值和预测值)的函数,并返回一个一维数组,其中数组的第 i 个值对应于X[i]上的损失。

如果样本上的损失大于residual_threshold,则该样本被分类为异常值。

版本 0.18 新增。

random_stateint, RandomState instance, default=None

用于初始化中心点的生成器。传入一个整数以使多次函数调用产生可重现的输出。请参阅术语表

属性:
estimator_对象

在 RANSAC 采样期间找到的“最佳”模型所预测的内点上拟合的最终模型(estimator对象的副本)。

n_trials_int

随机选择试验的次数,直到满足其中一个停止条件。它总是<= max_trials

inlier_mask_形状为 [n_samples] 的布尔数组

内点的布尔掩码,被分类为True

n_skips_no_inliers_int

由于找到零内点而跳过的迭代次数。

Added in version 0.19.

n_skips_invalid_data_int

由于由is_data_valid定义为无效数据而跳过的迭代次数。

Added in version 0.19.

n_skips_invalid_model_int

由于由is_model_valid定义为无效模型而跳过的迭代次数。

Added in version 0.19.

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

HuberRegressor

Linear regression model that is robust to outliers.

TheilSenRegressor

Theil-Sen Estimator robust multivariate regression model.

SGDRegressor

通过最小化正则化经验损失与 SGD 拟合。

References

示例

>>> from sklearn.linear_model import RANSACRegressor
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(
...     n_samples=200, n_features=2, noise=4.0, random_state=0)
>>> reg = RANSACRegressor(random_state=0).fit(X, y)
>>> reg.score(X, y)
0.9885
>>> reg.predict(X[:1,])
array([-31.9417])

有关更详细的示例,请参阅使用 RANSAC 进行稳健线性模型估计

fit(X, y, sample_weight=None, **fit_params)[源码]#

使用 RANSAC 算法拟合估计器。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

训练数据。

yshape 为 (n_samples,) 或 (n_samples, n_targets) 的 array-like

目标值。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

如果传递了 sample_weight 但估计器的 fit 方法不支持它,则为每个样本设置的单独权重将引发错误。

版本 0.18 新增。

**fit_paramsdict

通过元数据路由 API 路由到子估计器fit方法的参数。

版本 1.5 新增:仅当设置了sklearn.set_config(enable_metadata_routing=True)时可用。请参阅元数据路由用户指南了解更多详情。

返回:
selfobject

已拟合的RANSACRegressor估计器。

Raises:
ValueError

如果未找到有效的共识集。当is_data_validis_model_valid对所有max_trials随机选择的子样本都返回 False 时,会发生这种情况。

get_metadata_routing()[源码]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

1.5 版本新增。

返回:
routingMetadataRouter

封装路由信息的 MetadataRouter

get_params(deep=True)[源码]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X, **params)[源码]#

使用估计模型进行预测。

这是estimator_.predict(X)的包装器。

参数:
X{array-like or sparse matrix} of shape (n_samples, n_features)

Input data.

**paramsdict

通过元数据路由 API 路由到子估计器predict方法的参数。

版本 1.5 新增:仅当设置了sklearn.set_config(enable_metadata_routing=True)时可用。请参阅元数据路由用户指南了解更多详情。

返回:
y数组,形状 = [n_samples] 或 [n_samples, n_targets]

返回预测值。

score(X, y, **params)[源码]#

返回预测的分数。

这是estimator_.score(X, y)的包装器。

参数:
X(类数组或稀疏矩阵),形状为 (n_samples, n_features)

训练数据。

yshape 为 (n_samples,) 或 (n_samples, n_targets) 的 array-like

目标值。

**paramsdict

通过元数据路由 API 路由到子估计器score方法的参数。

版本 1.5 新增:仅当设置了sklearn.set_config(enable_metadata_routing=True)时可用。请参阅元数据路由用户指南了解更多详情。

返回:
zfloat

预测分数。

set_fit_request(*, sample_weight: 布尔值 | | 字符串 = '$UNCHANGED$') RANSACRegressor[源码]#

配置是否应请求元数据以传递给 fit 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 fit。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 fit

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_params(**params)[源码]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。