HalvingRandomSearchCV#

class sklearn.model_selection.HalvingRandomSearchCV(estimator, param_distributions, *, n_candidates='exhaust', factor=3, resource='n_samples', max_resources='auto', min_resources='smallest', aggressive_elimination=False, cv=5, scoring=None, refit=True, error_score=nan, return_train_score=True, random_state=None, n_jobs=None, verbose=0)[原始碼]#

對超參數進行隨機搜尋。

搜尋策略開始使用少量資源評估所有候選參數,並迭代選擇最佳候選參數,使用越來越多的資源。

候選參數是從參數空間隨機採樣的,採樣的候選參數數量由 n_candidates 決定。

使用者指南 中閱讀更多內容。

注意

此估算器目前仍處於實驗性階段:預測和 API 可能在沒有任何棄用週期的情況下發生變化。要使用它,您需要明確匯入 enable_halving_search_cv

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingRandomSearchCV
參數:
estimator估算器物件

假設此物件實作 scikit-learn 估算器介面。估算器需要提供一個 score 函數,或必須傳遞 scoring

param_distributions字典或字典列表

字典,其中參數名稱 (str) 作為鍵,以及分佈或要嘗試的參數列表。分佈必須提供一個用於採樣的 rvs 方法(例如來自 scipy.stats.distributions 的方法)。如果給定列表,則均勻採樣。如果給定字典列表,則先均勻採樣一個字典,然後使用該字典如上所述採樣一個參數。

n_candidates「exhaust」或 int,預設為「exhaust」

在第一次迭代中要採樣的候選參數數量。使用「exhaust」將採樣足夠的候選參數,以便最後一次迭代基於 min_resourcesmax_resourcesfactor 使用盡可能多的資源。在這種情況下,min_resources 不能為「exhaust」。

factorint 或 float,預設為 3

「減半」參數,決定每次後續迭代中選擇的候選參數比例。例如,factor=3 表示僅選擇三分之一的候選參數。

resource'n_samples' 或 str,預設為「n_samples」

定義每次迭代中增加的資源。預設情況下,資源是樣本數。也可以將其設定為接受正整數值的基礎估算器的任何參數,例如梯度提升估算器的「n_iterations」或「n_estimators」。在這種情況下,max_resources 不能為「auto」,必須明確設定。

max_resourcesint,預設為「auto」

任何候選參數在給定迭代中允許使用的最大資源數量。預設情況下,當 resource='n_samples'(預設)時,此設定為 n_samples,否則會引發錯誤。

min_resources{'exhaust', 'smallest'} 或 int,預設為「smallest」

任何候選參數在給定迭代中允許使用的最小資源量。同樣地,這定義了在第一次迭代時為每個候選參數分配的資源量 r0

  • 「smallest」是一種啟發式方法,將 r0 設定為一個小值

    • resource='n_samples' 用於迴歸問題時,n_splits * 2

    • resource='n_samples' 用於分類問題時,n_classes * n_splits * 2

    • resource != 'n_samples' 時,1

  • 「exhaust」會設定 r0,使得最後一次迭代使用盡可能多的資源。也就是說,最後一次迭代將使用小於 max_resources 的最高值,該值既是 min_resources 又是 factor 的倍數。一般來說,使用「exhaust」會產生更準確的估算器,但會稍微耗時。當 n_candidates='exhaust' 時,「exhaust」不可用。

請注意,每次迭代中使用的資源量始終是 min_resources 的倍數。

aggressive_eliminationbool,預設為 False

這僅在資源不足以將剩餘候選參數減少到最後一次迭代後最多 factor 時才相關。如果 True,則搜尋過程將「重播」第一次迭代,直到候選參數數量足夠小為止。預設為 False,這表示最後一次迭代可能會評估超過 factor 個候選參數。請參閱 候選參數的積極消除 以取得更多詳細資訊。

cvint、交叉驗證產生器或可迭代物件,預設為 5

決定交叉驗證分割策略。cv 的可能輸入包括

  • 整數,用於指定 (Stratified)KFold 中的摺疊數量,

  • CV 分割器,

  • 可迭代物件,將 (訓練、測試) 分割產生為索引陣列。

對於整數/None 輸入,如果估算器是分類器且 y 是二進位或多類別,則使用 StratifiedKFold。在所有其他情況下,使用 KFold。這些分割器以 shuffle=False 執行個體化,因此分割在不同呼叫中將會相同。

請參閱使用者指南,以了解此處可使用的各種交叉驗證策略。

注意

由於實作細節,cv 產生的折疊必須在多次呼叫 cv.split() 時保持一致。對於內建的 scikit-learn 迭代器,可以透過停用洗牌 (shuffle=False),或將 cvrandom_state 參數設定為整數來達成此目的。

scoringstr、可呼叫物件或 None,預設值為 None

用於評估測試集預測結果的單一字串(請參閱評分參數:定義模型評估規則)或可呼叫物件(請參閱可呼叫的評分器)。若為 None,則會使用估計器的 score 方法。

refitbool,預設值為 True

若為 True,則在整個資料集上使用找到的最佳參數重新擬合估計器。

重新擬合的估計器可在 best_estimator_ 屬性中取得,並允許直接在此 HalvingRandomSearchCV 實例上使用 predict

error_score‘raise’ 或數值

若在估計器擬合中發生錯誤,則指派給分數的值。若設定為 ‘raise’,則會引發錯誤。若給定數值,則會引發 FitFailedWarning。此參數不影響重新擬合步驟,該步驟將永遠引發錯誤。預設值為 np.nan

return_train_scorebool,預設值為 False

若為 False,則 cv_results_ 屬性將不包含訓練分數。計算訓練分數可用於深入了解不同的參數設定如何影響過擬合/欠擬合的取捨。然而,計算訓練集上的分數可能在計算上很耗費資源,且並非嚴格要求要選出產生最佳泛化效能的參數。

random_stateint、RandomState 實例或 None,預設值為 None

resources != 'n_samples' 時,用於對資料集進行子取樣的虛擬隨機數產生器狀態。也用於從可能值的清單中進行隨機均勻取樣,而非使用 scipy.stats 分佈。傳遞 int 以在多次函式呼叫中產生可重現的輸出。請參閱詞彙表

n_jobsint 或 None,預設值為 None

要並行執行的工作數。None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。請參閱詞彙表以取得更多詳細資訊。

verboseint

控制詳細程度:數值越高,訊息越多。

屬性:
n_resources_int 的清單

每次迭代使用的資源量。

n_candidates_int 的清單

每次迭代評估的候選參數數量。

n_remaining_candidates_int

最後一次迭代後剩餘的候選參數數量。它對應於 ceil(n_candidates[-1] / factor)

max_resources_int

任何候選者在給定迭代中允許使用的最大資源數量。請注意,由於每次迭代使用的資源數量必須是 min_resources_ 的倍數,因此最後一次迭代實際使用的資源數量可能小於 max_resources_

min_resources_int

在第一次迭代時為每個候選者分配的資源量。

n_iterations_int

實際執行的迭代次數。如果 aggressive_eliminationTrue,則此值等於 n_required_iterations_。否則,此值等於 min(n_possible_iterations_, n_required_iterations_)

n_possible_iterations_int

min_resources_ 資源開始且不超過 max_resources_ 時可能的迭代次數。

n_required_iterations_int

min_resources_ 資源開始,在最後一次迭代時最終產生少於 factor 個候選者所需的迭代次數。當沒有足夠的資源時,此值會小於 n_possible_iterations_

cv_results_numpy (masked) ndarrays 的字典

一個字典,其中索引鍵為欄標頭,值為欄,可以匯入 pandas DataFrame。它包含用於分析搜尋結果的大量資訊。請參閱使用者指南以取得詳細資訊。

best_estimator_估計器或字典

由搜尋選取的估計器,也就是在留出資料上提供最高分數(或在指定時提供最小損失)的估計器。如果 refit=False,則無法使用。

best_score_float

best_estimator 的平均交叉驗證分數。

best_params_dict

在保留資料上產生最佳結果的參數設定。

best_index_int

對應於最佳候選參數設定的 cv_results_ 陣列索引。

位於 search.cv_results_['params'][search.best_index_] 的字典提供了最佳模型的參數設定,該模型可提供最高的平均分數 (search.best_score_)。

scorer_函式或字典

在保留資料上使用的評分器函式,以選擇模型的最佳參數。

n_splits_int

交叉驗證分割(折疊/迭代)的次數。

refit_time_float

用於在整個資料集上重新擬合最佳模型的秒數。

僅當 refit 不為 False 時才會存在。

multimetric_bool

評分器是否計算多個度量。

classes_形狀為 (n_classes,) 的 ndarray

類別標籤。

n_features_in_int

fit期間看到的特徵數量。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit期間看到的特徵名稱。僅當定義了 best_estimator_ 時(請參閱 refit 參數的說明以取得更多詳細資訊),且 best_estimator_ 在擬合時公開 feature_names_in_ 時才會定義。

在 1.0 版中新增。

另請參閱

HalvingGridSearchCV

使用連續減半在參數網格上搜尋。

附註

選取的參數是根據評分參數最大化保留資料分數的參數。

所有以 NaN 評分的參數組合將共享最低排名。

範例

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv  # noqa
>>> from sklearn.model_selection import HalvingRandomSearchCV
>>> from scipy.stats import randint
>>> import numpy as np
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
>>> np.random.seed(0)
...
>>> param_distributions = {"max_depth": [3, None],
...                        "min_samples_split": randint(2, 11)}
>>> search = HalvingRandomSearchCV(clf, param_distributions,
...                                resource='n_estimators',
...                                max_resources=10,
...                                random_state=0).fit(X, y)
>>> search.best_params_  
{'max_depth': None, 'min_samples_split': 10, 'n_estimators': 9}
property classes_#

類別標籤。

僅當 refit=True 且估計器為分類器時才可用。

decision_function(X)[來源]#

使用找到的最佳參數在估計器上呼叫 decision_function。

僅在 refit=True 且底層估計器支援 decision_function 時可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

回傳:
y_score形狀為 (n_samples,) 或 (n_samples, n_classes) 或 (n_samples, n_classes * (n_classes-1) / 2) 的 ndarray

根據具有最佳找到參數的估計器,計算 X 的決策函數結果。

fit(X, y=None, **params)[原始碼]#

使用所有參數組合執行 fit。

參數:
X類陣列,形狀為 (n_samples, n_features)

訓練向量,其中 n_samples 是樣本數量,而 n_features 是特徵數量。

y類陣列,形狀為 (n_samples,) 或 (n_samples, n_output),選用

用於分類或回歸的相對於 X 的目標;對於非監督式學習則為 None。

**params字串 -> 物件 的字典

傳遞給估計器的 fit 方法的參數。

回傳:
self物件

已擬合估計器的實例。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南,瞭解路由機制如何運作。

在 1.4 版本中新增。

回傳:
routingMetadataRouter

封裝路由資訊的 MetadataRouter

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deep布林值,預設為 True

若為 True,將回傳此估計器的參數和包含的子物件(為估計器)。

回傳:
params字典

參數名稱對應到它們的值。

inverse_transform(X=None, Xt=None)[原始碼]#

使用最佳找到的參數,在估計器上呼叫 inverse_transform。

僅在底層估計器實作 inverse_transformrefit=True 時可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

Xt可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

自 1.5 版本起已棄用:Xt 在 1.5 版本中已棄用,並將在 1.7 版本中移除。請改用 X

回傳:
X形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}

根據具有最佳找到參數的估計器,計算 Xtinverse_transform 函數結果。

屬性 n_features_in_#

fit期間看到的特徵數量。

僅在 refit=True 時可用。

predict(X)[原始碼]#

使用最佳找到的參數,在估計器上呼叫 predict。

僅在 refit=True 且底層估計器支援 predict 時可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

回傳:
y_pred形狀為 (n_samples,) 的 ndarray

根據具有最佳找到參數的估計器,計算 X 的預測標籤或值。

predict_log_proba(X)[原始碼]#

使用最佳找到的參數,在估計器上呼叫 predict_log_proba。

僅在 refit=True 且底層估計器支援 predict_log_proba 時可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

回傳:
y_pred形狀為 (n_samples,) 或 (n_samples, n_classes) 的 ndarray

根據具有最佳找到參數的估計器,計算 X 的預測類別對數機率。類別的順序對應到已擬合屬性 classes_ 中的順序。

predict_proba(X)[原始碼]#

使用最佳找到的參數,在估計器上呼叫 predict_proba。

僅在 refit=True 且底層估計器支援 predict_proba 時可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

回傳:
y_pred形狀為 (n_samples,) 或 (n_samples, n_classes) 的 ndarray

根據具有最佳找到參數的估計器,計算 X 的預測類別機率。類別的順序對應到已擬合屬性 classes_ 中的順序。

score(X, y=None, **params)[原始碼]#

若估計器已重新擬合,則回傳給定資料的分數。

這會使用提供的 scoring 所定義的分數,否則會使用 best_estimator_.score 方法。

參數:
X形狀為 (n_samples, n_features) 的類陣列

輸入資料,其中 n_samples 是樣本數量,而 n_features 是特徵數量。

y形狀為 (n_samples, n_output) 或 (n_samples,) 的類陣列,預設為 None

用於分類或回歸的相對於 X 的目標;對於非監督式學習則為 None。

**params字典

要傳遞給底層評分器的參數。

在 1.4 版本中新增:僅在 enable_metadata_routing=True 時可用。請參閱中繼資料路由使用者指南,以瞭解更多詳細資訊。

回傳:
score浮點數

如果提供了 scoring,則為其定義的分數,否則為 best_estimator_.score 方法。

score_samples(X)[原始碼]#

使用最佳找到的參數,在估計器上呼叫 score_samples。

僅在 refit=True 且底層估計器支援 score_samples 時可用。

在 0.24 版本中新增。

參數:
X可迭代物件

要預測的資料。必須滿足底層估計器的輸入需求。

回傳:
y_score形狀為 (n_samples,) 的 ndarray

The best_estimator_.score_samples 方法。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個組件。

參數:
**params字典

估計器參數。

回傳:
self估計器實例

估計器實例。

transform(X)[原始碼]#

使用找到的最佳參數對估計器調用 transform。

僅當底層估計器支援 transformrefit=True 時才可用。

參數:
X可索引的,長度為 n_samples

必須滿足底層估計器的輸入假設。

回傳:
Xt形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}

基於具有最佳找到參數的估計器,轉換到新空間的 X