sklearn.model_selection.RandomizedSearchCV?
class sklearn.model_selection.RandomizedSearchCV(estimator,param_distributions,*,n_iter = 10,評分= None,n_jobs = None,iid ='deprecated',refit = True,cv = None,verbose = 0,pre_dispatch ='2 * n_jobs',random_state = None,error_score = nan,return_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中更改:默認值從更改 True 為False |
屬性 | 說明 |
---|---|
cv_results_ | dict of numpy (masked) ndarrays 將鍵作為列標題和值作為列的字典,將其導入pandas DataFrame 。例如下面給定的表 ![]() cv_results_ 表示:![]() 該鍵 'params' 用于存儲所有候選參數的參數設置字典列表。mean_fit_time ,std_fit_time ,mean_score_time 和 std_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的平均交叉驗證準確率。 對于多指標評估,如果 refit 為 False ,則不可用。有關refit 更多信息,請參見參數。如果 refit 為函數,則此屬性不可用。 |
best_params_ | dict 參數設置,為保留數據提供最優結果。 對于多指標評估,如果 refit 為 False ,則不可用。有關refit 更多信息,請參見參數。 |
best_index_ | int 對應于最優候選參數設置的( cv_results_ 數組的)索引。search.cv_results_['params'][search.best_index_] 處的字典給出了最優模型的參數設置,該模型給出了最高平均得分(search.best_score_ )。對于多指標評估,如果 refit 為False ,則不可用。有關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_transform
和 refit=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。
僅在基礎估計器支持transform
和refit=True
時可用。
參數 | 說明 |
---|---|
X | indexable, length n_samples 必須滿足基礎估計器的輸入假設。 |