RANSACRegressor#

class 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 是一种迭代算法,用于从完整数据集的子集中稳健地估计参数。

更多信息请参阅 用户指南

Parameters:
estimatorobject, default=None

基础估计器对象,实现以下方法:

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

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

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

如果 estimator 为 None,则使用 LinearRegression 进行目标值为浮点型的情况。

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

min_samplesint (>= 1) or float ([0, 1]), default=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, default=None

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

is_data_validcallable, default=None

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

is_model_validcallable, default=None

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

max_trialsint, default=100

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

max_skipsint, default=np.inf

由于找到零内点或由 is_data_validis_model_valid 定义的无效数据或模型而可以跳过的最大迭代次数。

Added in version 0.19.

stop_n_inliersint, default=np.inf

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

stop_scorefloat, default=np.inf

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

stop_probabilityfloat in range [0, 1], default=0.99

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

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

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

lossstr, callable, default=’absolute_error’

支持字符串输入 ‘absolute_error’ 和 ‘squared_error’,分别找到每个样本的绝对误差和平方误差。

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

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

Added in version 0.18.

random_stateint, RandomState instance, default=None

用于初始化中心的生成器。 传递一个 int 以在多次函数调用中获得可重复的输出。 参见 Glossary

Attributes:
estimator_object

最佳拟合模型( estimator 对象的副本)。

n_trials_int

直到满足某个停止准则的随机选择试验次数。它总是 <= max_trials

inlier_mask_bool array of shape [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

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

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

Added in version 1.0.

See also

HuberRegressor

对异常值稳健的线性回归模型。

TheilSenRegressor

Theil-Sen 估计器稳健的多变量回归模型。

SGDRegressor

通过最小化正则化经验损失进行拟合。

References

Examples

>>> 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...])
fit(X, y, *, sample_weight=None, **fit_params)#

拟合使用RANSAC算法的估计器。

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

训练数据。

yarray-like of shape (n_samples,) or (n_samples, n_targets)

目标值。

sample_weightarray-like of shape (n_samples,), default=None

每个样本的个体权重 如果传递了sample_weight并且估计器的fit方法不支持它,则会引发错误。

Added in version 0.18.

**fit_paramsdict

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

Added in version 1.5.

仅在设置 sklearn.set_config(enable_metadata_routing=True) 时可用。有关更多详细信息,请参阅:ref:Metadata Routing User Guide <metadata_routing>

Returns:
selfobject

拟合的 RANSACRegressor 估计器。

Raises:
ValueError

如果找不到有效的共识集。如果在所有 max_trials 随机选择的子样本中, is_data_validis_model_valid 返回False,则会发生这种情况。

get_metadata_routing()#

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

请查看 用户指南 以了解路由机制的工作原理。

Added in version 1.5.

Returns:
routingMetadataRouter

MetadataRouter 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

参数名称映射到它们的值。

predict(X, **params)#

使用估计的模型进行预测。

这是对 estimator_.predict(X) 的封装。

Parameters:
X{array-like 或 sparse matrix},形状为 (n_samples, n_features)

输入数据。

**paramsdict

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

Added in version 1.5: 仅在 sklearn.set_config(enable_metadata_routing=True) 设置时可用。有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
yarray, 形状为 [n_samples] 或 [n_samples, n_targets]

返回预测值。

score(X, y, **params)#

返回预测的分数。

这是对 estimator_.score(X, y) 的封装。

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

训练数据。

yarray-like of shape (n_samples,) or (n_samples, n_targets)

目标值。

**paramsdict

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

Added in version 1.5: 仅在 sklearn.set_config(enable_metadata_routing=True) 设置时可用。有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
zfloat

预测的分数。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RANSACRegressor#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

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

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。