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 (RANdom SAmple Consensus) 算法。
RANSAC是一种迭代算法,用于从完整数据集的内点子集中鲁棒地估计参数。
在用户指南中了解更多信息。
- 参数:
- estimatorobject, default=None
实现以下方法的基本估计器对象
fit(X, y): 使用给定的训练数据和目标值拟合模型。score(X, y): 返回给定测试数据的平均准确率,用于定义由stop_score设定的停止准则。此外,该分数用于判断两个大小相等的共识集哪个更好。predict(X): 使用线性模型返回预测值,用于通过损失函数计算残差。
如果
estimator为 None,则对于 dtype 为 float 的目标值,将使用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_valid定义的无效数据或由is_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,则该样本被归类为异常值。版本 0.18 新增。
- random_stateint, RandomState instance, default=None
用于初始化中心的生成器。传递一个 int 以在多次函数调用中获得可重现的输出。请参阅 词汇表。
- 属性:
- estimator_object
使用 RANSAC 采样期间找到的“最佳”模型预测的内点拟合的最终模型(
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
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
另请参阅
HuberRegressorLinear regression model that is robust to outliers.
TheilSenRegressorTheil-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)[source]#
使用 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 且估计器拟合方法不支持它,则每个样本的个体权重会引发错误。
版本 0.18 新增。
- **fit_paramsdict
通过元数据路由 API 路由到子估计器的
fit方法的参数。版本 1.5 新增: 仅当设置了
sklearn.set_config(enable_metadata_routing=True)时可用。有关详细信息,请参阅 元数据路由用户指南。
- 返回:
- selfobject
拟合的
RANSACRegressor估计器。
- Raises:
- ValueError
如果找不到有效的共识集。当
is_data_valid和is_model_valid对所有max_trials随机选择的子样本返回 False 时,会发生这种情况。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
1.5 版本新增。
- 返回:
- routingMetadataRouter
封装路由信息的
MetadataRouter。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- predict(X, **params)[source]#
使用估计的模型进行预测。
这是
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)时可用。有关详细信息,请参阅 元数据路由用户指南。
- 返回:
- yarray, shape = [n_samples] or [n_samples, n_targets]
返回预测值。
- score(X, y, **params)[source]#
返回预测的分数。
这是
estimator_.score(X, y)的包装器。- 参数:
- X(array-like or sparse matrix} of shape (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: bool | 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 中新增。
- 参数:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
fit方法中sample_weight参数的元数据路由。
- 返回:
- selfobject
更新后的对象。