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_valid
。is_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_valid
和is_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
fit
中sample_weight
參數的元數據路由。
- 返回:
- selfobject
更新後的物件。