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_valid 和is_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 估计器实例。 |