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
估計器實例。

sklearn.linear_model.RANSACRegressor使用示例?