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)[source]#

RANSAC (随机样本一致性) 算法。

RANSAC 是一种迭代算法,用于从完整数据集中的内点子集对参数进行鲁棒估计。

用户指南中阅读更多。

参数:
estimator对象, 默认为 None

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

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

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

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

如果 estimator 为 None,则对 dtype 为 float 的目标值使用 LinearRegression

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

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 定义的无效模型而可以跳过的最大迭代次数。

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 是一个可调用对象,那么它应该是一个函数,接受两个数组作为输入(真实值和预测值),并返回一个 1-D 数组,其中数组的第 i 个值对应于 X[i] 上的损失。

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

0.18 版本新增。

random_stateint, RandomState 实例, 默认为 None

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

属性:
estimator_对象

根据 RANSAC 采样过程中找到的“最佳”模型预测的内点拟合的最终模型(estimator 对象的副本)。

n_trials_int

随机选择尝试的次数,直到满足其中一个停止准则。它始终 max_trials

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

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

n_skips_no_inliers_int

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

0.19 版本新增。

n_skips_invalid_data_int

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

0.19 版本新增。

n_skips_invalid_model_int

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

0.19 版本新增。

n_features_in_int

拟合期间看到的特征数量。

0.24 版本新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合期间看到的特征名称。仅当 X 的所有特征名称都是字符串时才定义。

1.0 版本新增。

另请参阅

HuberRegressor

对异常值鲁棒的线性回归模型。

TheilSenRegressor

Theil-Sen 估计器,鲁棒多元回归模型。

SGDRegressor

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

参考文献

示例

>>> 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)[source]#

使用 RANSAC 算法拟合估计器。

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

训练数据。

y类数组, 形状为 (n_samples,) 或 (n_samples, n_targets)

目标值。

sample_weight类数组, 形状为 (n_samples,), 默认为 None

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

0.18 版本新增。

**fit_paramsdict

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

1.5 版本新增: 仅当 sklearn.set_config(enable_metadata_routing=True) 设置时可用。有关详细信息,请参阅元数据路由用户指南

返回:
self对象

拟合的 RANSACRegressor 估计器。

引发:
ValueError

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

get_metadata_routing()[source]#

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

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

1.5 版本新增。

返回:
routingMetadataRouter

一个封装路由信息的 MetadataRouter

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deep布尔值, 默认为 True

如果为 True,将返回此估计器以及所包含的作为估计器的子对象的参数。

返回:
paramsdict

参数名称及其对应的值。

predict(X, **params)[source]#

使用估计模型进行预测。

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

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

输入数据。

**paramsdict

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

1.5 版本新增: 仅当 sklearn.set_config(enable_metadata_routing=True) 设置时可用。有关详细信息,请参阅元数据路由用户指南

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

返回预测值。

score(X, y, **params)[source]#

返回预测得分。

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

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

训练数据。

y类数组, 形状为 (n_samples,) 或 (n_samples, n_targets)

目标值。

**paramsdict

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

1.5 版本新增: 仅当 sklearn.set_config(enable_metadata_routing=True) 设置时可用。有关详细信息,请参阅元数据路由用户指南

返回:
z浮点数

预测得分。

set_fit_request(*, sample_weight: 布尔值 | None | str = '$UNCHANGED$') RANSACRegressor[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估计器实例

估计器实例。