当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn RANSACRegressor用法及代码示例


本文简要介绍python语言中 sklearn.linear_model.RANSACRegressor 的用法。

用法:

class sklearn.linear_model.RANSACRegressor(base_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(随机抽样共识)算法。

RANSAC 是一种迭代算法,用于对来自完整数据集的内点子集的参数进行稳健估计。

在用户指南中阅读更多信息。

参数

base_estimator对象,默认=无

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

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

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

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

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

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

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

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

residual_threshold浮点数,默认=无

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

is_data_valid可调用,默认=无

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

is_model_valid可调用,默认=无

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

max_trials整数,默认=100

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

max_skips整数,默认=np.inf

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

stop_n_inliers整数,默认=np.inf

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

stop_score浮点数,默认=np.inf

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

stop_probability在 [0, 1] 范围内浮点数,默认 = 0.99

如果在 RANSAC 中采样了至少一组 outlier-free 训练数据集,则 RANSAC 迭代停止。这需要生成至少 N 个样本(迭代):

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

其中概率(置信度)通常设置为较高的值,例如 0.99(默认值),e 是当前的 inliers w.r.t 分数。样本总数。

lossstr,可调用,默认='absolute_error'

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

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

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

random_stateint,RandomState 实例,默认=无

用于初始化中心的生成器。传递 int 以在多个函数调用之间实现可重现的输出。请参阅术语表。

属性

estimator_对象

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

n_trials_int

直到满足停止标准之一的随机选择试验次数。它始终是 <= max_trials

inlier_mask_bool 形状数组 [n_samples]

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

n_skips_no_inliers_int

由于发现零内点而跳过的迭代次数。

n_skips_invalid_data_int

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

n_skips_invalid_model_int

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

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

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

参考

1

https://en.wikipedia.org/wiki/RANSAC

2

https://www.sri.com/sites/default/files/publications/ransac-publication.pdf

3

http://www.bmva.org/bmvc/2009/Papers/Paper355/Paper355.pdf

例子

>>> 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...])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.linear_model.RANSACRegressor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。