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_resources
、max_resources
和factor
使用盡可能多的資源。在這種情況下,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
中的摺疊數量,可迭代物件,將 (訓練、測試) 分割產生為索引陣列。
對於整數/None 輸入,如果估算器是分類器且
y
是二進位或多類別,則使用StratifiedKFold
。在所有其他情況下,使用KFold
。這些分割器以shuffle=False
執行個體化,因此分割在不同呼叫中將會相同。請參閱使用者指南,以了解此處可使用的各種交叉驗證策略。
注意
由於實作細節,
cv
產生的折疊必須在多次呼叫cv.split()
時保持一致。對於內建的scikit-learn
迭代器,可以透過停用洗牌 (shuffle=False
),或將cv
的random_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_elimination
為True
,則此值等於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_transform
且refit=True
時可用。- 參數:
- X可索引的,長度為 n_samples
必須滿足底層估計器的輸入假設。
- Xt可索引的,長度為 n_samples
必須滿足底層估計器的輸入假設。
自 1.5 版本起已棄用:
Xt
在 1.5 版本中已棄用,並將在 1.7 版本中移除。請改用X
。
- 回傳:
- X形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}
根據具有最佳找到參數的估計器,計算
Xt
的inverse_transform
函數結果。
- 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
方法。