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_valid
和is_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对象
更新后的对象。