被動攻擊迴歸器 (PassiveAggressiveRegressor)#
- class sklearn.linear_model.PassiveAggressiveRegressor(*, C=1.0, fit_intercept=True, max_iter=1000, tol=0.001, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, shuffle=True, verbose=0, loss='epsilon_insensitive', epsilon=0.1, random_state=None, warm_start=False, average=False)[原始碼]#
被動積極迴歸器。
請參閱使用者指南以了解更多資訊。
- 參數:
- Cfloat,預設值為 1.0
最大步長(正規化)。預設值為 1.0。
- fit_interceptbool,預設值為 True
是否應該估計截距。如果為 False,則假設資料已經置中。預設值為 True。
- max_iterint,預設值為 1000
訓練資料的最大傳遞次數(又稱 epoch)。它只會影響
fit
方法的行為,而不會影響partial_fit
方法。在版本 0.19 中新增。
- tolfloat 或 None,預設值為 1e-3
停止條件。如果不是 None,則當 (loss > previous_loss - tol) 時,迭代將停止。
在版本 0.19 中新增。
- early_stoppingbool,預設值為 False
是否使用提前停止來在驗證分數沒有改善時終止訓練。如果設為 True,它會自動將一部分訓練資料設為驗證集,並在驗證分數連續 n_iter_no_change 個 epoch 中沒有改善至少 tol 時終止訓練。
在版本 0.20 中新增。
- validation_fractionfloat,預設值為 0.1
設定為驗證集以進行提前停止的訓練資料比例。必須介於 0 和 1 之間。僅當 early_stopping 為 True 時才使用。
在版本 0.20 中新增。
- n_iter_no_changeint,預設值為 5
在提前停止之前,沒有改善的迭代次數。
在版本 0.20 中新增。
- shufflebool,預設值為 True
是否應該在每個 epoch 後打亂訓練資料。
- verboseint,預設值為 0
詳細程度。
- lossstr,預設值為 "epsilon_insensitive"
要使用的損失函數:epsilon_insensitive:相當於參考論文中的 PA-I。squared_epsilon_insensitive:相當於參考論文中的 PA-II。
- epsilonfloat,預設值為 0.1
如果目前的預測值與正確標籤之間的差異低於此閾值,則不會更新模型。
- random_stateint,RandomState 實例,預設值為 None
當
shuffle
設為True
時,用於打亂訓練資料。傳遞一個 int 以在多個函數呼叫中產生可重複的輸出。請參閱詞彙表。- warm_startbool,預設值為 False
當設為 True 時,會將先前 fit 呼叫的解重新用作初始化,否則只會清除先前的解。請參閱詞彙表。
當 warm_start 為 True 時重複呼叫 fit 或 partial_fit,由於資料的打亂方式,可能會導致與單次呼叫 fit 時不同的解。
- averagebool 或 int,預設值為 False
當設為 True 時,會計算平均 SGD 權重,並將結果儲存在
coef_
屬性中。如果設為大於 1 的整數,則在看到的樣本總數達到 average 後開始平均。因此,average=10 將在看到 10 個樣本後開始平均。在版本 0.19 中新增: 參數 average 以在 SGD 中使用權重平均。
- 屬性:
- coef_array,形狀 = [1, n_features] 如果 n_classes == 2,否則為 [n_classes, n_features]
指派給特徵的權重。
- intercept_array,形狀 = [1] 如果 n_classes == 2,否則為 [n_classes]
決策函數中的常數。
- n_features_in_int
在 fit 期間看到的特徵數量。
在版本 0.24 中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。在版本 1.0 中新增。
- n_iter_int
達到停止條件的實際迭代次數。
- t_int
訓練期間執行的權重更新次數。與
(n_iter_ * n_samples + 1)
相同。
另請參閱
SGDRegressor
透過使用 SGD 最小化正規化經驗損失來擬合的線性模型。
參考文獻
線上被動積極演算法 <http://jmlr.csail.mit.edu/papers/volume7/crammer06a/crammer06a.pdf> K. Crammer, O. Dekel, J. Keshat, S. Shalev-Shwartz, Y. Singer - JMLR (2006)。
範例
>>> from sklearn.linear_model import PassiveAggressiveRegressor >>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=4, random_state=0) >>> regr = PassiveAggressiveRegressor(max_iter=100, random_state=0, ... tol=1e-3) >>> regr.fit(X, y) PassiveAggressiveRegressor(max_iter=100, random_state=0) >>> print(regr.coef_) [20.48736655 34.18818427 67.59122734 87.94731329] >>> print(regr.intercept_) [-0.02306214] >>> print(regr.predict([[0, 0, 0, 0]])) [-0.02306214]
- densify()[原始碼]#
將係數矩陣轉換為密集陣列格式。
將
coef_
成員(還原)轉換為 numpy.ndarray。這是coef_
的預設格式,並且是擬合所必需的,因此只有在先前被稀疏化的模型上才需要呼叫此方法;否則,它是一個空操作。- 回傳:
- self
已擬合的估計器。
- fit(X, y, coef_init=None, intercept_init=None)[原始碼]#
使用被動-積極演算法擬合線性模型。
- 參數:
- X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features)
訓練資料。
- y形狀為 [n_samples] 的 numpy 陣列
目標值。
- coef_init陣列,形狀 = [n_features]
用於熱啟動最佳化的初始係數。
- intercept_init陣列,形狀 = [1]
用於熱啟動最佳化的初始截距。
- 回傳:
- self物件
已擬合的估計器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,瞭解路由機制如何運作。
- 回傳:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool,預設為 True
若為 True,則將回傳此估計器和包含的子物件(屬於估計器)的參數。
- 回傳:
- paramsdict
參數名稱對應至其值。
- partial_fit(X, y)[原始碼]#
使用被動-積極演算法擬合線性模型。
- 參數:
- X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features)
訓練資料的子集。
- y形狀為 [n_samples] 的 numpy 陣列
目標值的子集。
- 回傳:
- self物件
已擬合的估計器。
- predict(X)[原始碼]#
使用線性模型進行預測。
- 參數:
- X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features)
輸入資料。
- 回傳:
- 形狀為 (n_samples,) 的 ndarray
每個 X 元素預測的目標值。
- 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
的期望值、忽略輸入特徵的恆定模型將會得到 0.0 的 \(R^2\) 分數。- 參數:
- 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_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$') PassiveAggressiveRegressor [原始碼]#
請求傳遞給
fit
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關 (請參閱sklearn.set_config
)。請參閱關於路由機制如何運作的 使用者指南。每個參數的選項如下
True
:要求中繼資料,並在提供時傳遞給fit
。如果未提供中繼資料,則會忽略此請求。False
:不要求中繼資料,且元估計器不會將其傳遞給fit
。None
:不要求中繼資料,且如果使用者提供,元估計器會引發錯誤。str
:應使用此給定的別名而不是原始名稱,將中繼資料傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這可讓您變更某些參數的請求,而保持其他參數不變。於 1.3 版新增。
注意
只有當此估計器用作元估計器的子估計器時,例如在
Pipeline
內使用時,此方法才相關。否則它不會產生任何作用。- 參數:
- coef_initstr、True、False 或 None,預設值 = sklearn.utils.metadata_routing.UNCHANGED
fit
中coef_init
參數的中繼資料路由。- intercept_initstr、True、False 或 None,預設值 = sklearn.utils.metadata_routing.UNCHANGED
fit
中intercept_init
參數的中繼資料路由。
- 回傳:
- self物件
已更新的物件。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件 (例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估計器參數。
- 回傳:
- self估計器實例
估計器實例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PassiveAggressiveRegressor [原始碼]#
請求傳遞給
partial_fit
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關 (請參閱sklearn.set_config
)。請參閱關於路由機制如何運作的 使用者指南。每個參數的選項如下
True
:要求中繼資料,並在提供時傳遞給partial_fit
。如果未提供中繼資料,則會忽略此請求。False
:不請求元數據,且元估計器不會將其傳遞給partial_fit
。None
:不要求中繼資料,且如果使用者提供,元估計器會引發錯誤。str
:應使用此給定的別名而不是原始名稱,將中繼資料傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這可讓您變更某些參數的請求,而保持其他參數不變。於 1.3 版新增。
注意
只有當此估計器用作元估計器的子估計器時,例如在
Pipeline
內使用時,此方法才相關。否則它不會產生任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
partial_fit
中sample_weight
參數的元數據路由。
- 回傳:
- self物件
已更新的物件。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PassiveAggressiveRegressor [原始碼]#
請求傳遞至
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物件
已更新的物件。
- sparsify()[原始碼]#
將係數矩陣轉換為稀疏格式。
將
coef_
成員轉換為 scipy.sparse 矩陣,對於 L1 正則化的模型,這比通常的 numpy.ndarray 表示法更節省記憶體和儲存空間。不會轉換
intercept_
成員。- 回傳:
- self
已擬合的估計器。
注意事項
對於非稀疏模型,即當
coef_
中沒有太多零時,這實際上可能會增加記憶體使用量,因此請謹慎使用此方法。一個經驗法則是,零元素的數量(可以使用(coef_ == 0).sum()
計算)必須超過 50% 才能提供顯著的好處。在呼叫此方法後,在您呼叫 densify 之前,使用 partial_fit 方法(如果有)進一步擬合將無法運作。