當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。