被動攻擊分類器#
- class sklearn.linear_model.PassiveAggressiveClassifier(*, 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='hinge', n_jobs=None, random_state=None, warm_start=False, class_weight=None, average=False)[原始碼]#
被動-積極分類器。
請參閱使用者指南以了解更多資訊。
- 參數:
- Cfloat,預設值=1.0
最大步長(正規化)。預設值為 1.0。
- fit_interceptbool,預設值=True
是否應估計截距。如果為 False,則假設資料已居中對齊。
- 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,預設值="hinge"
要使用的損失函數:hinge:相當於參考論文中的 PA-I。squared_hinge:相當於參考論文中的 PA-II。
- n_jobsint 或 None,預設值=None
用於執行 OVA(一對多,用於多類別問題)計算的 CPU 數量。除非在
joblib.parallel_backend
環境中,None
表示 1。-1
表示使用所有處理器。請參閱詞彙表以了解更多詳細資訊。- random_stateint,RandomState 實例,預設值=None
用於在
shuffle
設定為True
時對訓練資料進行洗牌。傳遞一個 int 以在多個函數呼叫中產生可重現的輸出。請參閱詞彙表。- warm_startbool,預設值=False
當設定為 True 時,將先前呼叫 fit 的解決方案重新用作初始化,否則,只會清除先前的解決方案。請參閱詞彙表。
當 warm_start 為 True 時重複呼叫 fit 或 partial_fit,由於資料洗牌的方式,可能會產生與單次呼叫 fit 時不同的解決方案。
- class_weightdict,{class_label: weight} 或 “balanced” 或 None,預設值=None
class_weight fit 參數的預設值。
與類別相關聯的權重。如果未提供,則假設所有類別的權重均為 1。
「balanced」模式使用 y 的值來自動調整權重,權重與輸入資料中類別頻率成反比,如下所示:
n_samples / (n_classes * np.bincount(y))
。0.17 版本新增:參數 class_weight 用於自動權衡樣本。
- averagebool 或 int,預設值為 False
當設定為 True 時,會計算平均的 SGD 權重並將結果儲存在
coef_
屬性中。若設定為大於 1 的整數,則在觀察到的樣本總數達到 average 時,開始計算平均值。例如,average=10 會在觀察到 10 個樣本後開始計算平均值。0.19 版本新增:參數 average 用於在 SGD 中使用權重平均。
- 屬性:
- coef_ndarray,形狀為 (1, n_features) 若 n_classes == 2,否則為 (n_classes, n_features)
分配給特徵的權重。
- intercept_ndarray,形狀為 (1,) 若 n_classes == 2,否則為 (n_classes,)
決策函數中的常數項。
- n_features_in_int
在 fit 期間觀察到的特徵數量。
0.24 版本新增。
- feature_names_in_ndarray,形狀為 (
n_features_in_
,) 在 fit 期間觀察到的特徵名稱。僅當
X
具有全為字串的特徵名稱時定義。1.0 版本新增。
- n_iter_int
達到停止條件的實際迭代次數。對於多類別擬合,它是每個二元擬合的最大值。
- classes_ndarray,形狀為 (n_classes,)
唯一的類別標籤。
- t_int
訓練期間執行的權重更新次數。與
(n_iter_ * n_samples + 1)
相同。
另請參閱
SGDClassifier
增量訓練的邏輯回歸。
Perceptron
線性感知器分類器。
參考文獻
線上被動攻擊演算法 <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 PassiveAggressiveClassifier >>> from sklearn.datasets import make_classification >>> X, y = make_classification(n_features=4, random_state=0) >>> clf = PassiveAggressiveClassifier(max_iter=1000, random_state=0, ... tol=1e-3) >>> clf.fit(X, y) PassiveAggressiveClassifier(random_state=0) >>> print(clf.coef_) [[0.26642044 0.45070924 0.67251877 0.64185414]] >>> print(clf.intercept_) [1.84127814] >>> print(clf.predict([[0, 0, 0, 0]])) [1]
- decision_function(X)[原始碼]#
預測樣本的信賴分數。
樣本的信賴分數與該樣本到超平面的帶符號距離成正比。
- 參數:
- X{array-like, 稀疏矩陣},形狀為 (n_samples, n_features)
我們想要獲得信賴分數的資料矩陣。
- 返回:
- scoresndarray,形狀為 (n_samples,) 或 (n_samples, n_classes)
每個
(n_samples, n_classes)
組合的信賴分數。在二元情況下,self.classes_[1]
的信賴分數,其中 >0 表示將預測此類別。
- densify()[原始碼]#
將係數矩陣轉換為密集陣列格式。
將
coef_
成員(返回)轉換為 numpy.ndarray。這是coef_
的預設格式,並且是擬合所必需的,因此僅需對先前已稀疏化的模型呼叫此方法;否則,它是一個空操作。- 返回:
- self
已擬合的估計器。
- fit(X, y, coef_init=None, intercept_init=None)[原始碼]#
使用被動攻擊演算法擬合線性模型。
- 參數:
- X{array-like, 稀疏矩陣},形狀為 (n_samples, n_features)
訓練資料。
- yarray-like,形狀為 (n_samples,)
目標值。
- coef_initndarray,形狀為 (n_classes, n_features)
用於熱啟動最佳化的初始係數。
- intercept_initndarray,形狀為 (n_classes,)
用於熱啟動最佳化的初始截距。
- 返回:
- self物件
已擬合的估計器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南,了解路由機制如何運作。
- 返回:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool,預設值為 True
若為 True,將會返回此估計器及其包含的子物件(即估計器)的參數。
- 返回:
- paramsdict
參數名稱對應到其值的字典。
- partial_fit(X, y, classes=None)[原始碼]#
使用被動攻擊演算法擬合線性模型。
- 參數:
- X{array-like, 稀疏矩陣},形狀為 (n_samples, n_features)
訓練資料的子集。
- yarray-like,形狀為 (n_samples,)
目標值的子集。
- classesndarray,形狀為 (n_classes,)
跨所有 `partial_fit` 呼叫的類別。可以透過
np.unique(y_all)
取得,其中 y_all 是整個資料集的目標向量。這個參數在第一次呼叫 `partial_fit` 時是必需的,在後續呼叫中可以省略。請注意,y 不需要包含 `classes` 中的所有標籤。
- 返回:
- self物件
已擬合的估計器。
- predict(X)[原始碼]#
預測 X 中樣本的類別標籤。
- 參數:
- X{array-like, 稀疏矩陣},形狀為 (n_samples, n_features)
我們想要取得預測的資料矩陣。
- 返回:
- y_predndarray,形狀為 (n_samples,)
包含每個樣本的類別標籤的向量。
- score(X, y, sample_weight=None)[原始碼]#
回傳給定測試資料和標籤的平均準確度。
在多標籤分類中,這是子集準確度,這是一個嚴苛的指標,因為您要求每個樣本的每個標籤集都被正確預測。
- 參數:
- Xarray-like,形狀為 (n_samples, n_features)
測試樣本。
- yarray-like,形狀為 (n_samples,) 或 (n_samples, n_outputs)
X
的真實標籤。- sample_weightarray-like,形狀為 (n_samples,),預設值為 None
樣本權重。
- 返回:
- score浮點數
self.predict(X)
相對於 `y` 的平均準確度。
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [原始碼]#
請求傳遞到 `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>
,因此可以更新巢狀物件的每個元件。- 參數:
- **params字典
估計器參數。
- 返回:
- self估計器實例
估計器實例。
- set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [原始碼]#
請求傳遞至
partial_fit
方法的中繼資料。請注意,只有在 `enable_metadata_routing=True` 時此方法才相關(請參閱
sklearn.set_config
)。請參閱 使用者指南,瞭解路由機制的運作方式。每個參數的選項為:
True
:請求中繼資料,如果提供則傳遞至partial_fit
。如果未提供中繼資料,則忽略此請求。False
:不請求中繼資料,且 meta-estimator 不會將其傳遞至partial_fit
。None
:不請求中繼資料,如果使用者提供,元估計器將會引發錯誤。str
:中繼資料應使用此給定的別名(而不是原始名稱)傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這允許您更改某些參數的請求,而不是其他參數的請求。在 1.3 版本中新增。
注意
只有當此估計器用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則它沒有任何效果。- 參數:
- classesstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
partial_fit
中classes
參數的中繼資料路由。
- 返回:
- self物件
已更新的物件。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') PassiveAggressiveClassifier [原始碼]#
請求傳遞至
score
方法的中繼資料。請注意,只有在 `enable_metadata_routing=True` 時此方法才相關(請參閱
sklearn.set_config
)。請參閱 使用者指南,瞭解路由機制的運作方式。每個參數的選項為:
True
:請求中繼資料,如果提供則傳遞至score
。如果未提供中繼資料,則忽略此請求。False
:不請求中繼資料,且 meta-estimator 不會將其傳遞至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% 才能提供顯著的好處。在呼叫此方法後,使用 partial_fit 方法(如果有的話)進行進一步擬合將無法運作,直到您呼叫 densify 為止。