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