sklearn.model_selection.RandomizedSearchCV?

class sklearn.model_selection.RandomizedSearchCVestimatorparam_distributions,*,n_iter = 10,評分= Nonen_jobs = Noneiid ='deprecated',refit = Truecv = Noneverbose = 0,pre_dispatch ='2 * n_jobs',random_state = Noneerror_score = nanreturn_train_score = False )

[源碼]

隨機搜索超參數。

RandomizedSearchCV可以實現“fit”和“score”方法。如果在所使用的估計器中實現了“predict”,“predict_proba”,“decision_function”,“transform”和“inverse_transform”,則RandomizedSearchCV也可以實現它們。

用于應用這些方法的估計器的參數,是通過在參數設置上進行交叉驗證的搜索來優化的。

與GridSearchCV相比,并非所有參數值都經過試驗,而是從指定的分布中采樣了固定數量的參數設置。嘗試的參數設置數由n_iter給出。

如果所有參數均以列表形式顯示,則執行采樣而無需替換。如果給定至少一個參數作為分布,則使用替換抽樣。強烈建議對連續參數使用連續分布。

用戶指南中閱讀更多內容。

版本0.14中的新功能。

參數 說明
estimator estimator object.
將為每個網格點實例化該類型的對象。假定這樣做是為了實現scikit-learn估計器接口。估計器需要提供score功能,或者scoring必須通過。
param_distributions dict or list of dicts
以參數名稱(str)作為鍵以及要嘗試的分布或參數列表的字典。分布必須提供一種rvs 抽樣方法(例如scipy.stats.distributions中的抽樣方法)。如果給出列表,則對其進行統一采樣。如果給出了字典列表,則首先對一個字典進行統一采樣,然后如上所述使用該字典對參數進行采樣。
n_iter int, default=10
采樣的參數設置數量。n_iter權衡了運行時間和解決方案質量。
scoring str, callable, list/tuple or dict, default=None
單個str(請參閱評分參數:定義模型評估規則)或一個可調用項(請參閱從指標函數定義評分策略)以評估測試集上的預測。

要評估多個指標,請給出(唯一的)字符串列表或以名稱為鍵、可調用項為值的字典。

注意,使用自定義評分器時,每個評分器應返回一個值。返回值列表或數組的指標函數可以包裝到多個評分器中,每個評分器都返回一個值。

有關示例,請參閱指定多個指標進行評估

如果為None,則使用估計器的評分方法。
n_jobs int, default=None
要并行運行的CPU內核數。 None除非在joblib.parallel_backend環境中,否則表示1 。 -1表示使用所有處理器。有關更多詳細信息,請參見詞匯表

v0.20版中:n_jobs默認從1更改為None
pre_dispatch int, or str, default=None
控制在并行執行期間分派的CPU內核數。當調度的CPU內核數量超過CPU的處理能力時,減少此數量可能有助于避免內存消耗激增。該參數可以是:

-None,在這種情況下,將立即創建并派生所有CPU內核。將此用于輕量級和快速運行的CPU內核,以避免由于按需生成CPU內核而造成的延遲
iid bool, default=False
如果為True,則按折數返回平均得分,并按每個測試集中的樣本數加權。在這種情況下,假定數據在折疊上分布相同,并且最小化的損失是每個樣本的總損失,而不是折疊的平均損失。

從版本0.22開始iid不推薦使用:參數在0.22中不再推薦使用,并將在0.24中刪除
cv int, cross-validation generator or an iterable, default=None
確定交叉驗證切分策略。可以輸入:

-None,默認使用5折交叉驗證;
-integer,用于指定在(Stratified)KFold中的折疊數;
-CV splitter
- 可迭代輸出訓練集和測試集的切分作為索引數組

對于integer或None,如果估計器是分類器,并且y是二分類或多分類,StratifiedKFold則使用該估計器。在所有其他情況下,KFold均使用。

有關可在此處使用的各種交叉驗證策略,請參閱用戶指南

在版本0.22中更改cv默認為“None”時,從3折更改為5折。
refit bool, str, or callable, default=True
使用在整個數據集中找到的最優參數重新擬合估計器。

對于多指標評估,這需要是str,表示將用于找到最佳參數以最終重新擬合估計器的評分器。

如果在選擇最佳估計器時除了最大分數之外還考慮其他因素,可以將refit設置為一個函數,該函數在給定cv_results時返回所選的best_index_。在這種情況下,當best_score_ 不可用時,best_estimator_best_params_將根據返回的best_index_值進行設置。

調整后的估計器在該best_estimator_ 屬性上可用,并允許predict直接在RandomizedSearchCV實例上使用。

同樣對于多指標估計,best_index_best_score_best_params_屬性僅在設置refit時可用,并且所有屬性都將根據這個特定的評分器來確定。

請參閱scoring參數以了解有關多指標評估的更多信息。

在0.20版中進行了更改:添加了對Callable的支持。
verbose integer
控制詳細程度:越高,消息越多。
random_state int or RandomState instance, default=None
偽隨機數生成器狀態,用于從可能值列表而不是scipy.stats分布進行隨機統一采樣。為多個函數調用傳遞可重復輸出的int值。請參閱詞匯表
error_score ‘raise’ or numeric, default=np.nan

在估計器擬合中出現錯誤時分配給分數的值。如果設置為“ raise”,則會引發錯誤。如果給出數值,則引發FitFailedWarning。此參數不會影響重新擬合步驟,這將總是引發錯誤。
return_train_score bool, default=False
如果為False,則cv_results_屬性將不包括訓練集準確率。計算訓練集準確率用于了解不同的參數設置如何影響過擬合或欠擬合的權衡。但是,在訓練集上計算準確率可能在計算上很耗時,并且不嚴格要求選擇輸出最優泛化性能的參數。

版本0.19中的新功能。

版本0.21中更改:默認值從更改TrueFalse
屬性 說明
cv_results_ dict of numpy (masked) ndarrays
將鍵作為列標題和值作為列的字典,將其導入pandas DataFrame

例如下面給定的表
用字典cv_results_表示:
注意

該鍵'params'用于存儲所有候選參數的參數設置字典列表。

mean_fit_timestd_fit_timemean_score_timestd_score_time的單位都是秒。

對于多指標評估,所有評分器的得分都可以在字典cv_results_中以該評分器名字('_<scorer_name>')結尾的鍵獲得,而不是'_score'上面顯示的。(“ split0_test_precision”,“ mean_train_precision”等)

best_estimator_ estimator
搜索選擇的估計器,即,對保留數據給出最高分(或最小損失,指定時)的估計量。如果refit=False,則不可用。

對于多指標評估,僅在refit指定后此屬性才存在 。

有關refit允許值的更多信息,請參見參數。
best_score_ float
best_estimator的平均交叉驗證準確率。

對于多指標評估,如果refitFalse,則不可用。有關refit更多信息,請參見參數。

如果refit為函數,則此屬性不可用。
best_params_ dict
參數設置,為保留數據提供最優結果。

對于多指標評估,如果refitFalse,則不可用。有關refit更多信息,請參見參數。
best_index_ int
對應于最優候選參數設置的(cv_results_數組的)索引。

search.cv_results_['params'][search.best_index_]處的字典給出了最優模型的參數設置,該模型給出了最高平均得分(search.best_score_)。

對于多指標評估,如果refitFalse ,則不可用。有關refit更多信息,請參見參數。
scorer_ function or a dict
在保留的數據上使用評分器功能,為模型選擇優參數。

對于多指標評估,此屬性包含已驗證的 scoring字典,該字典將評分器鍵映射到可調用的評分器。
n_splits_ int
交叉驗證切分(折疊或迭代)的數量。
refit_time_ float
在整個數據集中重新擬合最優模型的秒數。

僅當refit不是False 時才存在。

0.20版中的新功能。

另見:

GridSearchCV 對參數網格進行詳盡搜索。

ParameterSampler 由param_distributions構造的參數設置生成器。

根據評分參數,所選參數是那些使保留數據的準確率最大化的參數。

如果n_jobs設置為大于1的值,則會為每個參數設置(而不是n_jobs次數)復制數據。如果出于效率考慮,這樣做是因為單個任務花費的時間很少,但是如果數據集很大且沒有足夠的可用內存,則可能會引發錯誤。在這種情況下,解決方法是設置pre_dispatch。然后,內存僅復制 pre_dispatch多次。pre_dispatch的合理值是2 * n_jobs

示例

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import RandomizedSearchCV
>>> from scipy.stats import uniform
>>> iris = load_iris()
>>> logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
>>> distributions = dict(C=uniform(loc=0, scale=4),
...                      penalty=['l2''l1'])
>>> clf = RandomizedSearchCV(logistic, distributions, random_state=0)
>>> search = clf.fit(iris.data, iris.target)
>>> search.best_params_
{'C'2..., 'penalty''l1'}

方法

方法 說明
decision_function(self, X) 使用找到的最優參數在估計器上調用Decision_function。
fit(self, X[, y, groups]) 將所有參數組合進行擬合。
get_params(self[, deep]) 獲取此估計器的參數。
inverse_transform(self, Xt) 用找到的最優參數在估計器上調用inverse_transform。
predict(self, X) 使用找到的最優參數在估計器上調用predict。
predict_log_proba(self, X) 使用找到的最優參數在估計器上調用predict_log_proba。
predict_proba(self, X) 使用找到的最優參數在估計器上調用predict_proba。
score(self, X[, y]) 如果估計器已重新擬合,則返回給定數據的準確率。
set_params(self, **params) 設置此估計器的參數。
transform(self, X) 使用找到的最優參數在估計器上調用transform。
__init__(self,estimator,param_distributions,*,n_iter = 10,得分= None,n_jobs = None,iid =' preprecated ',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',random_state = None,error_score = nan,return_train_score = False )

[源碼]

初始化self。詳情可參閱 type(self)的幫助。

decision_function(self, X)

[源碼]

使用找到的最優參數在估計器上調用Decision_function。

僅在refit=True且基礎估計器支持decision_function時可用。

參數 說明
X indexable, length n_samples
必須滿足基礎估算器的輸入假設。
fit(self,X,y = None,*,groups = None,** fit_params )

[源碼]

將所有參數組合進行擬合。

參數 說明
X array-like of shape (n_samples, n_features)
用于訓練的向量,其中n_samples是樣本數量,n_features是特征數量。
y array-like of shape (n_samples, n_output) or (n_samples,), default=None
相對于X的標簽,用于分類或回歸;無監督學習為None。
groups array-like of shape (n_samples,), default=None
將數據集切分為訓練集或測試集時使用的樣本的分組標簽。僅與“ Group” cv 實例(例如GroupKFold)結合使用。
**fit_params dict of str -> object
傳遞給估計器fit方法的參數
get_params(self,deep = True )

[源碼]

獲取此估計器的參數。

參數 說明
deep bool, default=True
如果為True,返回此估計器的參數和估計器包含的子對象。
返回值 說明
params mapping of string to any
參數名稱映射到其值。
inverse_transform(self, Xt)

[源碼]

用找到的最優參數在估計器上調用inverse_transform。

僅在基礎估計器實現inverse_transformrefit=True時可用。

參數 說明
Xt indexable, length n_samples
必須滿足基礎估算器的輸入假設。
predict(self, X)

[源碼]

使用找到的最優參數在估計器上調用predict。

僅在refit=True且基礎估計器支持predict時可用。

參數 說明
X indexable, length n_samples
必須滿足基礎估算器的輸入假設。
predict_log_proba(self, X)

[源碼]

使用找到的最優參數在估計器上調用predict_log_proba。

僅在refit=True且基礎估計器支持predict_log_proba時可用。

參數 說明
X indexable, length n_samples
必須滿足基礎估算器的輸入假設。
predict_proba(self, X)

[源碼]

使用找到的最優參數在估計器上調用predict_proba。

僅在refit=True且基礎估計器支持predict_proba時可用。

參數 說明
X indexable, length n_samples
必須滿足基礎估計器的輸入假設。
score(self, X, y=None)

[源碼]

如果估計器已重新擬合,則返回給定數據的準確率。

使用提供的scoring定義的準確率,否則使用best_estimator_.score方法。

參數 說明
X array-like of shape (n_samples, n_features)
用于輸入的數據,其中n_samples是樣本數量,n_features是特征數量。
y array-like of shape (n_samples, n_output) or (n_samples,), default=None
相對于X的標簽,用于分類或回歸;無監督學習為None。
返回值 說明
score float
set_params(self, **params)

[源碼]

設置此估計器的參數。

該方法適用于簡單的估計器以及嵌套對象(例如pipelines)。后者具有形式參數 <component>__<parameter>以便可以更新嵌套對象的每個組件。

參數 說明
**params dict
估計器參數。
返回值 說明
self object
估計器實例。
transform(self, X)

[源碼]

使用找到的最優參數在估計器上調用transform。

僅在基礎估計器支持transformrefit=True時可用。

參數 說明
X indexable, length n_samples
必須滿足基礎估計器的輸入假設。

sklearn.model_selection.RandomizedSearchCV使用示例?