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_loss', random_state=None)

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

RANSAC是一种从完整数据集的内点子集鲁棒估计参数的迭代算法。

用户指南中阅读更多内容。

参数 说明
base_estimator object, optional
基本估计器对象,它实现以下方法:

- fit(X, y):根据给定的训练数据和目标值拟合模型。
- score(X, y):返回给定测试数据的平均准确度stop_score,用于定义的停止标准。另外,该分数用于确定选择两个相等的大共识集中的哪个作为更好的集合。
- predict(X):使用线性模型返回预测值,该模型用于使用损失函数计算残差。

如果base_estimator为None,则将base_estimator=sklearn.linear_model.LinearRegression()用于应用于float类型的目标值。

请注意,当前对象仅支持回归估计器。
min_samples int (>= 1) or float ([0, 1]), optional
从原始数据中随机选择的最小样本数。对于min_samples >= 1视为的绝对样本数,对于min_samples < 1视为的相对数ceil(min_samples * X.shape[0]) 。这通常被选择为给定base_estimator所需的最少样本数。默认情况下,假设估算器为sklearn.linear_model.LinearRegression()并将 min_samples选择为X.shape[1] + 1
residual_threshold float, optional
将数据样本分类为内部数据的最大残差。默认情况下,将阈值选择为目目标值y的MAD(中值绝对偏差)。
is_data_valid callable, optional
在对模型进行拟合之前,调用此函数随机选择的数据:is_data_valid(X, y)。如果其返回值为False,则跳过当前随机选择的子样本。
is_model_valid callable, optional
用估计的模型和随机选取的数据调用该函数:is_model_valid(model, X, y)。如果其返回值为False,则跳过当前随机选择的子样本。与使用相比,使用此函数拒绝样本的计算成本比is_data_valid更高。因此,仅在需要估计模型来做出拒绝决策时才使用is_model_valid
max_trials int, optional
随机样本选择的最大迭代次数。
max_skips int, optional
由于查找由is_data_valid定义的零内点或无效数据或is_model_valid定义的无效模型而可以跳过的最大迭代次数。

0.19版本中的新功能。
stop_n_inliers int, optional
如果至少找到了此数目的内点,则停止迭代。
stop_score float, optional
如果得分大于等于该阈值,则停止迭代。
stop_probability float in range [0, 1], optional
如果在RANSAC中至少采样了一组离群值的训练数据,则RANSAC迭代将停止。这需要至少生成N个样本(迭代):
N >= log(1 - probability) / log(1 - e**m)
其中,probability(置信度)通常设置为较高的值,例如0.99(默认值),并且e是当前内点关于样本总数的分数。
loss string, callable, optional, default “absolute_loss”
支持字符串输入“ absolute_loss”和“ squared_loss”,分别计算每个样本的绝对损失和平方损失。
如果loss是可调用的,则它应该是一个函数,该函数将两个数组作为真实值和预测值作为输入,并返回一个一维数组,该数组的第i个值对应于X[i]的损失。
如果样本的损失大于residual_threshold,则该样本被分类为离群值。
random_state int, RandomState instance, default=None
生成器用于初始化中心。传递一个整数实现多个函数的可重复输出。请参阅词汇表
属性 说明
estimator_ object
最佳拟合模型(base_estimator对象的副本)。
n_trials_ int
满足任意停止标准之前的随机选择试验次数。它总是<= max_trials
inlier_mask_ bool array of shape [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版本中的新功能。

参考

1 https://zh.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...])

方法

方法 说明
fit(X, y[, sample_weight]) 使用RANSAC算法拟合估计器。
get_params([deep]) 获取此估计器的参数。
predict(X) 使用估计的模型进行预测。
score(X, y) 返回预测的分数。
set_params(**params) 设置此估算器的参数。
__init__(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_loss', random_state=None)

[源码]

初始化self, 请参阅help(type(self))以获得准确的说明。

fit(X, y, sample_weight=None)

[源码]

使用RANSAC算法拟合估计器。

参数 说明
X array-like or sparse matrix, shape [n_samples, n_features]
训练数据。
y array-like of shape (n_samples,) or (n_samples, n_targets)
目标值。
sample_weight array-like of shape (n_samples,), default=None
如果传递了sample_weight而基估计器拟合方法不支持,则每个样本的单个权重都会产生误差。

0.18版本中的新功能。
返回值 说明
ValueError 如果找不到有效的一致集。出现这种情况,如果is_data_validis_model_valid对于所有max_trials的随机选择子样本都返回FALSE。
get_params(deep=True)

[源码]

获取此估计器的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算器和所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
predict(X)

[源码]

使用线性模型进行预测。

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

参数 说明
X numpy array of shape [n_samples, n_features]
返回值 说明
y array, shape = [n_samples] or [n_samples, n_targets]
返回预测值。
score(X, y)

[源码]

返回预测的分数。

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

参数 说明
X numpy array or sparse matrix of shape [n_samples, n_features]
测试样本。
y array, shape = [n_samples] or [n_samples, n_targets]
目标值。
返回值 说明
score float
预测分数。
set_params(**params)

[源码]

设置此估计器的参数。

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

参数 说明
**params dict
估计器参数。
返回值 说明
self object
估计器实例。