TheilSenRegressor#
- class sklearn.linear_model.TheilSenRegressor(*, fit_intercept=True, copy_X='deprecated', max_subpopulation=10000.0, n_subsamples=None, max_iter=300, tol=0.001, random_state=None, n_jobs=None, verbose=False)[原始碼]#
Theil-Sen 估計器:穩健的多變數迴歸模型。
此演算法計算 X 中樣本的子集(大小為 n_subsamples)上的最小平方解。n_subsamples 的任何值(介於特徵數量和樣本數量之間)都會產生一個在穩健性和效率之間取得平衡的估計器。由於最小平方解的數量是「n_samples 選取 n_subsamples」,它可能非常大,因此可以使用 max_subpopulation 限制。如果達到此限制,則會隨機選擇子集。在最後一個步驟中,將計算所有最小平方解的空間中位數(或 L1 中位數)。
請在使用者指南中閱讀更多內容。
- 參數:
- fit_interceptbool,預設值 = True
是否計算此模型的截距。如果設定為 false,則計算中將不使用截距。
- copy_Xbool,預設值 = True
如果為 True,將複製 X;否則可能會被覆寫。
自 1.6 版已棄用:
copy_X
在 1.6 版中已棄用,將在 1.8 版中移除。由於始終會進行複製,因此它沒有任何作用。- max_subpopulationint,預設值 = 1e4
如果「n 選取 k」(其中 n 是樣本數量,k 是子樣本數量(至少是特徵數量))大於 max_subpopulation,則僅考慮給定最大大小的隨機子群體,而不使用基數為「n 選取 k」的集合進行計算。對於非小問題的大小,如果 n_subsamples 沒有變更,則此參數將決定記憶體使用量和執行時間。請注意,資料類型應為整數,但也可以接受浮點數(例如 1e4)。
- n_subsamplesint,預設值 = None
計算參數的樣本數量。這至少是特徵數量(如果 fit_intercept=True,則加 1),最大值為樣本數量。較低的數字會導致較高的崩潰點和較低的效率,而較高的數字會導致較低的崩潰點和較高的效率。如果為 None,則採用導致最大穩健性的最小子樣本數量。如果 n_subsamples 設定為 n_samples,則 Theil-Sen 與最小平方相同。
- max_iterint,預設值 = 300
計算空間中位數的最大迭代次數。
- tolfloat,預設值 = 1e-3
計算空間中位數時的容差。
- random_stateint、RandomState 實例或 None,預設值 = None
定義隨機排列產生器狀態的隨機數字產生器實例。傳遞一個 int 以便在多個函數呼叫中產生可重現的輸出。請參閱詞彙表。
- n_jobsint,預設值 = None
在交叉驗證期間使用的 CPU 數量。
None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。請參閱詞彙表以取得更多詳細資訊。- verbosebool,預設值 = False
擬合模型時的詳細模式。
- 屬性:
- coef_形狀為 (n_features,) 的 ndarray
迴歸模型的係數(分佈的中位數)。
- intercept_float
迴歸模型的估計截距。
- breakdown_float
近似的崩潰點。
- n_iter_int
空間中位數所需的迭代次數。
- n_subpopulation_int
從「n 選取 k」中考慮的組合數量,其中 n 是樣本數量,k 是子樣本數量。
- n_features_in_int
在fit期間看到的特徵數量。
在 0.24 版中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在fit期間看到的特徵名稱。僅當
X
具有全為字串的特徵名稱時定義。在 1.0 版中新增。
另請參閱
HuberRegressor
對離群值具有穩健性的線性迴歸模型。
RANSACRegressor
RANSAC (RANdom SAmple Consensus) 演算法。
SGDRegressor
透過使用 SGD 最小化正規化的經驗損失來擬合。
參考文獻
Theil-Sen Estimators in a Multiple Linear Regression Model, 2009 Xin Dang, Hanxiang Peng, Xueqin Wang and Heping Zhang http://home.olemiss.edu/~xdang/papers/MTSE.pdf
範例
>>> from sklearn.linear_model import TheilSenRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression( ... n_samples=200, n_features=2, noise=4.0, random_state=0) >>> reg = TheilSenRegressor(random_state=0).fit(X, y) >>> reg.score(X, y) 0.9884... >>> reg.predict(X[:1,]) array([-31.5871...])
- fit(X, y)[原始碼]#
擬合線性模型。
- 參數:
- X形狀為 (n_samples, n_features) 的 ndarray
訓練資料。
- y形狀為 (n_samples,) 的 ndarray
目標值。
- 傳回:
- self傳回 self 的實例。
已擬合的
TheilSenRegressor
估計器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請檢查使用者指南,了解路由機制如何運作。
- 傳回:
- routingMetadataRequest
一個
MetadataRequest
封裝路由資訊。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool,預設值 = True
如果為 True,則會傳回此估計器的參數和所包含的子物件(這些子物件也是估計器)。
- 傳回:
- paramsdict
參數名稱對應到它們的值。
- predict(X)[原始碼]#
使用線性模型進行預測。
- 參數:
- X類陣列或稀疏矩陣,形狀 (n_samples, n_features)
樣本。
- 傳回:
- C陣列,形狀 (n_samples,)
傳回預測值。
- score(X, y, sample_weight=None)[原始碼]#
回傳預測的決定係數。
決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 是總平方和((y_true - y_true.mean()) ** 2).sum()
。最佳分數為 1.0,且可能為負值 (因為模型可能任意差)。一個總是預測y
的期望值,而不考慮輸入特徵的常數模型,其 \(R^2\) 分數將為 0.0。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
測試樣本。對於某些估計器,這可能是一個預先計算的核矩陣或一個通用物件的列表,其形狀為
(n_samples, n_samples_fitted)
,其中n_samples_fitted
是估計器擬合時使用的樣本數。- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
X
的真實值。- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。
- 傳回:
- score浮點數
self.predict(X)
相對於y
的 \(R^2\)。
注意事項
當在回歸器上呼叫
score
時,使用的 \(R^2\) 分數從 0.23 版本開始使用multioutput='uniform_average'
,以與r2_score
的預設值保持一致。這會影響所有多輸出回歸器的score
方法(除了MultiOutputRegressor
)。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **params字典
估計器參數。
- 傳回:
- self估計器實例
估計器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') TheilSenRegressor [原始碼]#
請求傳遞給
score
方法的中繼資料。請注意,僅當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,如果提供,則傳遞給score
。如果未提供中繼資料,則忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞給score
。None
:不請求中繼資料,如果使用者提供,則元估計器會引發錯誤。str
:中繼資料應以這個給定的別名而不是原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這讓您可以更改某些參數的請求,而無需更改其他參數的請求。在 1.3 版本中新增。
注意
僅當此估計器用作元估計器的子估計器時,例如在
Pipeline
內部使用時,此方法才相關。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
score
中的sample_weight
參數的中繼資料路由。
- 傳回:
- self物件
已更新的物件。