被動攻擊分類器#

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_fitclasses 參數的中繼資料路由。

返回:
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

scoresample_weight 參數的中繼資料路由。

返回:
self物件

已更新的物件。

sparsify()[原始碼]#

將係數矩陣轉換為稀疏格式。

coef_ 成員轉換為 scipy.sparse 矩陣,對於 L1 正規化模型,這比通常的 numpy.ndarray 表示法在記憶體和儲存上更有效率。

不會轉換 intercept_ 成員。

返回:
self

已擬合的估計器。

注意事項

對於非稀疏模型,即當 coef_ 中沒有太多零時,這實際上可能會增加記憶體使用量,因此請謹慎使用此方法。一個經驗法則是,零元素的數量(可以使用 (coef_ == 0).sum() 計算)必須超過 50% 才能提供顯著的好處。

在呼叫此方法後,使用 partial_fit 方法(如果有的話)進行進一步擬合將無法運作,直到您呼叫 densify 為止。