本文簡要介紹python語言中 sklearn.model_selection.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:dict
以參數名稱(字符串)作為鍵和分布或要嘗試的參數列表的字典。發行版必須提供
rvs
抽樣方法(例如來自 scipy.stats.distributions 的抽樣方法)。如果給出一個列表,則對其進行均勻采樣。- n_candidates:int,默認='排氣'
在第一次迭代時要采樣的候選參數的數量。使用 ‘exhaust’ 將根據
min_resources
、max_resources
和factor
對足夠多的候選者進行采樣,以便最後一次迭代使用盡可能多的資源。在這種情況下,min_resources
不能是‘exhaust’。- factor:int 或浮點數,默認=3
‘halving’ 參數,確定每次後續迭代選擇的候選者的比例。例如,
factor=3
表示隻選擇了三分之一的候選者。- resource:
'n_samples'
或 str,默認='n_samples' 定義隨著每次迭代而增加的資源。默認情況下,資源是樣本數。它也可以設置為接受正整數值的基本估計器的任何參數,例如‘n_iterations’ 或 ‘n_estimators’ 用於梯度提升估計器。在這種情況下,
max_resources
不能是 ‘auto’,必須明確設置。- max_resources:整數,默認='自動'
允許任何候選者用於給定迭代的最大資源數。默認情況下,當
resource='n_samples'
(默認)時設置為n_samples
,否則會引發錯誤。- min_resources:{‘exhaust’, ‘smallest’} 或 int,默認 ='smallest'
允許任何候選者用於給定迭代的最小資源量。等效地,這定義了在第一次迭代中為每個候選者分配的資源量
r0
。‘smallest’ 是一種將
r0
設置為較小值的啟發式算法:n_splits * 2
當resource='n_samples'
用於回歸問題n_classes * n_splits * 2
當resource='n_samples'
用於分類問題1
當resource != 'n_samples'
‘exhaust’ 將設置
r0
使得最後的迭代使用盡可能多的資源。也就是說,最後一次迭代將使用小於的最大值max_resources
這是兩者的倍數min_resources
和factor
.通常,使用‘exhaust’ 會導致更準確的估計器,但會稍微耗時一些。 ‘exhaust’ 在以下情況下不可用n_candidates='exhaust'
.
請注意,每次迭代使用的資源量始終是
min_resources
的倍數。- aggressive_elimination:布爾,默認=假
這僅適用於在最後一次迭代後沒有足夠資源將剩餘候選者減少到最多
factor
的情況。如果True
,則搜索過程將根據需要進行 ‘replay’ 第一次迭代,直到候選的數量足夠少。默認情況下這是False
,這意味著最後一次迭代可能評估超過factor
候選。有關詳細信息,請參閱積極消除候選人。- cv:int,交叉驗證生成器或可迭代的,默認=5
確定交叉驗證拆分策略。 cv 的可能輸入是:
- 整數,指定
(Stratified)KFold
中的折疊數, - CV分配器,
- 一個可迭代的 yield (train, test) 拆分為索引數組。
對於整數/無輸入,如果估計器是分類器並且
y
是二進製或多類,則使用StratifiedKFold
。在所有其他情況下,使用KFold
。這些拆分器使用shuffle=False
實例化,因此拆分在調用之間將是相同的。有關可在此處使用的各種交叉驗證策略,請參閱用戶指南。
注意
由於實現細節,
cv
產生的折疊在多次調用cv.split()
時必須相同。對於內置的scikit-learn
迭代器,這可以通過停用改組 (shuffle=False
) 或將cv
的random_state
參數設置為整數來實現。- 整數,指定
- scoring:str,可調用,或無,默認=無
單個字符串(參見評分參數:定義模型評估規則)或可調用的(見從度量函數定義你的評分策略) 來評估對測試集的預測。如果沒有,則使用估計器的評分方法。
- refit:布爾,默認=真
如果為真,則使用整個數據集上找到的最佳參數重新擬合估計器。
重新安裝的估計器在
best_estimator_
屬性中可用,並允許直接在此HalvingRandomSearchCV
實例上使用predict
。- error_score:‘raise’ 或數字
如果在估計器擬合中發生錯誤,則分配給分數的值。如果設置為‘raise’,則會引發錯誤。如果給出數值,則引發FitFailedWarning。此參數不影響改裝步驟,這將始終引發錯誤。默認為
np.nan
。- return_train_score:布爾,默認=假
如果
False
,則cv_results_
屬性將不包括訓練分數。計算訓練分數用於深入了解不同的參數設置如何影響過擬合/欠擬合權衡。然而,在訓練集上計算分數可能在計算上很昂貴,並且不嚴格要求選擇產生最佳泛化性能的參數。- random_state:int、RandomState 實例或無,默認=無
resources != 'n_samples'
時用於對數據集進行二次采樣的偽隨機數生成器狀態。也用於從可能值列表而不是 scipy.stats 分布中隨機均勻抽樣。傳遞 int 以獲得跨多個函數調用的可重現輸出。請參閱詞匯表。- n_jobs:int 或無,默認=無
並行運行的作業數。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關詳細信息,請參閱詞匯表。- verbose:int
控製詳細程度:越高,消息越多。
- 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
實際運行的迭代次數。這等於
n_required_iterations_
如果aggressive_elimination
是True
。否則,這等於min(n_possible_iterations_, n_required_iterations_)
。- n_possible_iterations_:int
從
min_resources_
資源開始且不超過max_resources_
的可能迭代次數。- n_required_iterations_:int
在最後一次迭代中以少於
factor
的候選者結束所需的迭代次數,從min_resources_
資源開始。當沒有足夠的資源時,這將小於n_possible_iterations_
。- cv_results_:numpy(屏蔽)ndarrays的字典
一個帶有鍵作為列標題和值作為列的字典,可以導入到 pandas
DataFrame
中。它包含大量用於分析搜索結果的信息。詳情請參閱用戶指南。- best_estimator_:估計器或聽寫器
搜索選擇的估計器,即在遺漏數據上給出最高分數(或最小損失,如果指定)的估計器。如果
refit=False
則不可用。- best_score_:浮點數
best_estimator 的平均 cross-validated 得分。
- best_params_:dict
在保留數據上給出最佳結果的參數設置。
- best_index_:int
對應於最佳候選參數設置的索引(
cv_results_
數組)。search.cv_results_['params'][search.best_index_]
處的 dict 給出了最佳模型的參數設置,它給出了最高的平均分數 (search.best_score_
)。- scorer_:函數或字典
用於保留數據的記分器函數為模型選擇最佳參數。
- n_splits_:int
交叉驗證拆分(折疊/迭代)的數量。
- refit_time_:浮點數
用於在整個數據集上重新擬合最佳模型的秒數。
僅當
refit
不為 False 時才存在。- multimetric_:bool
記分員是否計算多個指標。
classes_
ndarray 形狀 (n_classes,)類標簽。
n_features_in_
int擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅在定義了
best_estimator_
時才定義(有關更多詳細信息,請參閱refit
參數的文檔)並且best_estimator_
在適合時公開feature_names_in_
。
參數:
屬性:
注意:
根據評分參數,選擇的參數是使held-out 數據的評分最大化的參數。
例子:
>>> 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}
相關用法
- Python sklearn HalvingGridSearchCV用法及代碼示例
- Python sklearn HashingVectorizer用法及代碼示例
- Python sklearn HistGradientBoostingRegressor用法及代碼示例
- Python sklearn HuberRegressor用法及代碼示例
- Python sklearn HistGradientBoostingClassifier用法及代碼示例
- Python sklearn Hyperparameter用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
- Python sklearn log_loss用法及代碼示例
- Python sklearn r2_score用法及代碼示例
- Python sklearn ndcg_score用法及代碼示例
- Python sklearn ShrunkCovariance用法及代碼示例
- Python sklearn SelfTrainingClassifier用法及代碼示例
- Python sklearn load_svmlight_file用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.model_selection.HalvingRandomSearchCV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。