RANSACRegressor#

class sklearn.linear_model.RANSACRegressor(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 (RANdom SAmple Consensus) 演算法。

RANSAC 是一種迭代演算法,用於從完整資料集中,從內群值的子集中穩健地估計參數。

請在使用者指南中閱讀更多資訊。

參數:
estimator物件,預設值=None

基本估計器物件,實作以下方法

  • fit(X, y): 將模型擬合到給定的訓練資料和目標值。

  • score(X, y): 傳回給定測試資料的平均準確度,該準確度用於由 stop_score 定義的停止條件。此外,分數用於決定兩個大小相等的共識集合中,哪個是較好的集合。

  • predict(X): 傳回使用線性模型預測的值,該值用於使用損失函數計算殘差誤差。

如果 estimator 為 None,則對於 dtype 為 float 的目標值,會使用 LinearRegression

請注意,目前的實作僅支援迴歸估計器。

min_samplesint (>= 1) 或 float ([0, 1]),預設值=None

從原始資料隨機選擇的最小樣本數。對於 min_samples >= 1,視為樣本的絕對數,對於 min_samples < 1,視為相對數 ceil(min_samples * X.shape[0])。這通常選擇為估計給定 estimator 所需的最小樣本數。依預設會假設為 LinearRegression 估計器,且 min_samples 會選擇為 X.shape[1] + 1。此參數高度依賴於模型,因此如果使用 LinearRegression 以外的 estimator,則使用者必須提供值。

residual_thresholdfloat,預設值=None

資料樣本被歸類為內群值的最大殘差。依預設,臨界值會選擇為目標值 y 的 MAD (中位數絕對偏差)。殘差嚴格等於臨界值的點會被視為內群值。

is_data_valid可呼叫的物件,預設值=None

此函數會在模型擬合到隨機選取的資料之前被呼叫:is_data_valid(X, y)。如果其傳回值為 False,則會略過目前隨機選擇的子樣本。

is_model_valid可呼叫的物件,預設值=None

此函數會使用估計的模型和隨機選取的資料來呼叫:is_model_valid(model, X, y)。如果其傳回值為 False,則會略過目前隨機選擇的子樣本。使用此函數拒絕樣本的計算成本高於使用 is_data_validis_model_valid 因此僅在需要估計的模型來做出拒絕決策時才應該使用。

max_trialsint,預設值=100

隨機樣本選擇的最大迭代次數。

max_skipsint,預設值=np.inf

因發現零個內群值或 is_data_valid 定義的無效資料或 is_model_valid 定義的無效模型而可以略過的最大迭代次數。

在 0.19 版中新增。

stop_n_inliersint,預設值=np.inf

如果找到至少這個數量的內群值,則停止迭代。

stop_scorefloat,預設值=np.inf

如果分數大於或等於此臨界值,則停止迭代。

stop_probabilityfloat,範圍 [0, 1],預設值=0.99

RANSAC 迭代會在 RANSAC 中取樣到至少一組無離群值的訓練資料時停止。這需要產生至少 N 個樣本(迭代)。

N >= log(1 - probability) / log(1 - e**m)

其中機率(信賴度)通常設定為較高的值,例如 0.99(預設值),而 e 是目前內群點相對於樣本總數的比例。

loss(損失)str, callable, default='absolute_error'

支援字串輸入 'absolute_error' 和 'squared_error',分別找出每個樣本的絕對誤差和平方誤差。

如果 loss 是一個可呼叫的物件,那麼它應該是一個函數,接收兩個陣列作為輸入,分別是真實值和預測值,並返回一個 1 維陣列,該陣列的第 i 個值對應於 X[i] 上的損失。

如果樣本的損失大於 residual_threshold,則該樣本會被歸類為離群值。

在 0.18 版本中新增。

random_state(隨機狀態)int, RandomState 實例, default=None

用於初始化中心的產生器。傳遞一個整數以在多個函數呼叫之間產生可重現的輸出。請參閱詞彙表

屬性:
estimator_(估計器)object

在 RANSAC 取樣期間找到的「最佳」模型所預測的內群點上擬合的最終模型(estimator 物件的副本)。

n_trials_(試驗次數)int

直到滿足其中一個停止條件的隨機選擇試驗次數。它總是 <= max_trials

inlier_mask_(內群點遮罩)形狀為 [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 版中新增。

n_features_in_(輸入特徵數)int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_(輸入特徵名稱)形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全為字串的特徵名稱時才定義。

在 1.0 版本中新增。

另請參閱

HuberRegressor

對離群值具有穩健性的線性迴歸模型。

TheilSenRegressor

Theil-Sen 估計器,穩健的多變量迴歸模型。

SGDRegressor

透過使用 SGD 最小化正規化的經驗損失來擬合。

參考文獻

範例

>>> 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...])

如需更詳細的範例,請參閱 使用 RANSAC 的穩健線性模型估計

fit(X, y, *, sample_weight=None, **fit_params)[來源]#

使用 RANSAC 演算法擬合估計器。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

訓練資料。

y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列

目標值。

sample_weight(樣本權重)形狀為 (n_samples,) 的類陣列,default=None

每個樣本的個別權重,如果傳遞 sample_weight 且估計器擬合方法不支援,則會引發錯誤。

在 0.18 版本中新增。

**fit_paramsdict

透過元資料路由 API 傳遞至子估計器的 fit 方法的參數。

在 1.5 版本中新增:僅當設定 sklearn.set_config(enable_metadata_routing=True) 時才可用。請參閱 元資料路由使用者指南 以取得更多詳細資料。

返回:
selfobject

已擬合的 RANSACRegressor 估計器。

引發:
ValueError

如果找不到有效的共識集。如果 is_data_validis_model_valid 對於所有 max_trials 隨機選擇的子樣本都返回 False 時,就會發生此情況。

get_metadata_routing()[來源]#

取得此物件的元資料路由。

請查看 使用者指南,瞭解路由機制的運作方式。

在 1.5 版本中新增。

返回:
routing(路由)MetadataRouter

封裝路由資訊的 MetadataRouter

get_params(deep=True)[來源]#

取得此估計器的參數。

參數:
deep(深度)bool,default=True

如果為 True,將返回此估計器的參數,以及包含的子物件(為估計器)。

返回:
params(參數)dict

對應到其值的參數名稱。

predict(X, **params)[來源]#

使用估計的模型進行預測。

這是 estimator_.predict(X) 的包裝器。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列或稀疏矩陣}

輸入資料。

**paramsdict

透過元資料路由 API 傳遞至子估計器的 predict 方法的參數。

在 1.5 版本中新增:僅當設定 sklearn.set_config(enable_metadata_routing=True) 時才可用。請參閱 元資料路由使用者指南 以取得更多詳細資料。

返回:
y陣列,形狀 = [n_samples] 或 [n_samples, n_targets]

返回預測值。

score(X, y, **params)[來源]#

返回預測的分數。

這是 estimator_.score(X, y) 的包裝器。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列或稀疏矩陣}

訓練資料。

y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列

目標值。

**paramsdict

透過元資料路由 API 傳遞至子估計器的 score 方法的參數。

在 1.5 版本中新增:僅當設定 sklearn.set_config(enable_metadata_routing=True) 時才可用。請參閱 元資料路由使用者指南 以取得更多詳細資料。

返回:
zfloat

預測的分數。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RANSACRegressor[來源]#

請求傳遞至 fit 方法的元資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請參閱 使用者指南,瞭解路由機制的運作方式。

每個參數的選項為

  • True:請求元資料,如果提供,則傳遞給 fit。如果未提供元資料,則會忽略請求。

  • False:不請求元數據,且元估計器不會將其傳遞給 fit

  • None:不請求元數據,如果使用者提供,元估計器會引發錯誤。

  • str:元數據應以這個給定的別名傳遞給元估計器,而不是原始名稱。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您更改某些參數的請求,而其他參數則不變。

在 1.3 版本中新增。

注意

只有在將此估計器用作元估計器的子估計器時,此方法才相關,例如在 Pipeline 中使用。否則,它不會產生任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight 參數的元數據路由。

返回:
selfobject

更新後的物件。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單估計器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個元件。

參數:
**paramsdict

估計器參數。

返回:
self估計器實例

估計器實例。