當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python dask_ml.model_selection.GridSearchCV用法及代碼示例

用法:

class dask_ml.model_selection.GridSearchCV(estimator, param_grid, scoring=None, iid=True, refit=True, cv=None, error_score='raise', return_train_score=False, scheduler=None, n_jobs=- 1, cache_cv=True)

對估計器的指定參數值進行詳盡搜索。

GridSearchCV 實現了 “fit” 和 “score” 方法。如果在使用的估計器中實現了 “predict”、“predict_proba”、“decision_function”、“transform” 和 “inverse_transform”,它還實現了它們。

用於應用這些方法的估計器的參數由 cross-validated grid-search 在參數網格上進行優化。

參數

estimator估計器對象。

為每個參數實例化此類型的對象。假設這實現了scikit-learn 估計器接口。估計器需要提供score 函數,或者必須傳遞scoring。如果給定一個字典列表,首先對字典進行均勻采樣,然後使用該字典對參數進行采樣,如上所述。

param_grid字典或字典列表

以參數名稱(字符串)作為鍵的字典和要嘗試作為值的參數設置列表,或此類字典的列表,在這種情況下,將探索列表中每個字典跨越的網格。這可以搜索任何參數設置序列。

scoring字符串,可調用,列表/元組,字典或無,默認值:無

用於評估測試集預測的單個字符串或可調用對象。

為了評估多個指標,或者給出一個(唯一的)字符串列表,或者給出一個名稱作為鍵、可調用對象作為值的字典。

請注意,使用自定義記分器時,每個記分器應返回一個值。返回值列表/數組的度量函數可以包裝到多個記分器中,每個記分器返回一個值。

如果沒有,則使用估計器的默認記分器(如果可用)。

iid布爾值,默認 = True

如果為 True,則假定數據在折疊中均勻分布,最小化的損失是每個樣本的總損失,而不是折疊的平均損失。

cvint,交叉驗證生成器或可迭代的,可選的

確定交叉驗證拆分策略。 cv 的可能輸入是:

  • 無,使用默認的 3 折交叉驗證,

  • 整數,指定 (Stratified)KFold 中的折疊數,

  • 用作交叉驗證生成器的對象。

  • 一個可迭代的 yield (train, test) 拆分為索引數組。

對於整數/無輸入,如果估計器是分類器並且y 是二進製或多類,則使用StratifiedKFold。在所有其他情況下,使用KFold

refit布爾值或字符串,默認 = True

使用整個數據集上找到的最佳參數重新擬合估計器。

對於多指標評估,這需要是一個字符串,表示記分器用於找到最後重新擬合估計器的最佳參數。

重新安裝的估計器在best_estimator_ 屬性中可用,並允許直接在此GridSearchCV 實例上使用predict

同樣對於多指標評估,屬性 best_index_ , best_score_best_parameters_ 僅在設置了 refit 時才可用,並且所有這些屬性都將根據這個特定的記分器來確定。

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

error_score‘raise’(默認)或數字

如果在估計器擬合中發生錯誤,則分配給分數的值。如果設置為‘raise’,則會引發錯誤。如果給出數值,則會引發 FitFailedWarning。此參數不影響改裝步驟,這將始終引發錯誤。

return_train_score布爾值,默認 = True

如果 'False' ,則 cv_results_ 屬性將不包括訓練分數。計算訓練分數用於深入了解不同的參數設置如何影響過擬合/欠擬合權衡。然而,在訓練集上計算分數可能在計算上很昂貴,並且不嚴格要求選擇產生最佳泛化性能的參數。

請注意,對於scikit-learn >= 0.19.1,默認的True 已被棄用,並且在未明確詢問火車分數的情況下訪問火車分數結果時會發出警告。

scheduler字符串,可調用,客戶端,或無,默認=無

要使用的 dask 調度程序。默認是使用全局調度器(如果設置),否則回退到線程調度器。要使用不同的調度程序,請按名稱指定它(“threading”, “multiprocessing”, or “synchronous”),傳入 dask.distributed.Client ,或提供調度程序 get 函數。

n_jobs整數,默認=-1

並行運行的作業數。忽略同步和分布式調度程序。如果 n_jobs == -1 [default] 使用所有 CPU。使用n_jobs < -1 , (n_cpus + 1 + n_jobs)

cache_cv布爾,默認=真

是否在每個工作進程中最多提取每個訓練/測試子集一次,或者每次需要該子集時。緩存拆分可以加快計算速度,但會增加每個工作進程的內存使用量。

如果為 True,最壞情況下的內存使用量是每個工作人員 (n_splits + 1) * (X.nbytes + y.nbytes)。如果為 False,最壞情況下的內存使用量是每個工作人員 (n_threads_per_worker + 1) * (X.nbytes + y.nbytes)

屬性

cv_results_numpy(屏蔽)ndarrays的字典

一個帶有鍵作為列標題和值作為列的字典,可以導入到 pandas DataFrame 中。

例如下麵給出的表格

param_kernel

param_gamma

param_degree

split0_test_score

秩…..

‘poly’

-

2

0.8

2

‘poly’

-

3

0.7

4

‘rbf’

0.1

-

0.8

3

‘rbf’

0.2

-

0.9

1

將由 cv_results_ 字典表示:

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                                mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                            mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                                mask = [False False  True  True]...),
'split0_test_score'  : [0.8, 0.7, 0.8, 0.9],
'split1_test_score'  : [0.82, 0.5, 0.7, 0.78],
'mean_test_score'    : [0.81, 0.60, 0.75, 0.82],
'std_test_score'     : [0.02, 0.01, 0.03, 0.03],
'rank_test_score'    : [2, 4, 3, 1],
'split0_train_score' : [0.8, 0.7, 0.8, 0.9],
'split1_train_score' : [0.82, 0.7, 0.82, 0.5],
'mean_train_score'   : [0.81, 0.7, 0.81, 0.7],
'std_train_score'    : [0.03, 0.04, 0.03, 0.03],
'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
'mean_score_time'    : [0.007, 0.06, 0.04, 0.04],
'std_score_time'     : [0.001, 0.002, 0.003, 0.005],
'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
}

請注意,鍵 'params' 用於存儲所有候選參數的參數設置字典列表。

mean_fit_time , std_fit_time , mean_score_timestd_score_time 都以秒為單位。

best_estimator_估計器

搜索選擇的估計器,即在遺漏數據上給出最高分數(或最小損失,如果指定)的估計器。如果 refit=False,則不可用。

best_score_浮點數或浮點數

best_estimator 在遺漏數據上的得分。當使用多個指標時,best_score_ 將是一個字典,其中鍵是記分員的姓名,值是該記分員的平均測試分數。

best_params_dict

在保留數據上給出最佳結果的參數設置。

best_index_整數或整數的字典

對應於最佳候選參數設置的索引(cv_results_ 數組)。

search.cv_results_['params'][search.best_index_] 處的 dict 給出了最佳模型的參數設置,它給出了最高的平均分數 (search.best_score_)。

當使用多個指標時,best_index_ 將是一個字典,其中鍵是記分員的姓名,值是該記分員的平均得分最高的索引,如上所述。

scorer_函數或函數字典

用於保留數據的記分器函數為模型選擇最佳參數。使用多個指標時的 {scorer_name: scorer} 字典。

n_splits_int

交叉驗證拆分(折疊/迭代)的數量。

注意

選擇的參數是那些最大化遺漏數據分數的參數,除非傳遞了明確的分數,在這種情況下使用它來代替。

例子

>>> import dask_ml.model_selection as dcv
>>> from sklearn import svm, datasets
>>> iris = datasets.load_iris()
>>> parameters = {'kernel': ['linear', 'rbf'], 'C': [1, 10]}
>>> svc = svm.SVC()
>>> clf = dcv.GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)  
GridSearchCV(cache_cv=..., cv=..., error_score=...,
        estimator=SVC(C=..., cache_size=..., class_weight=..., coef0=...,
                      decision_function_shape=..., degree=..., gamma=...,
                      kernel=..., max_iter=-1, probability=False,
                      random_state=..., shrinking=..., tol=...,
                      verbose=...),
        iid=..., n_jobs=..., param_grid=..., refit=..., return_train_score=...,
        scheduler=..., scoring=...)
>>> sorted(clf.cv_results_.keys())  
['mean_fit_time', 'mean_score_time', 'mean_test_score',...
 'mean_train_score', 'param_C', 'param_kernel', 'params',...
 'rank_test_score', 'split0_test_score',...
 'split0_train_score', 'split1_test_score', 'split1_train_score',...
 'split2_test_score', 'split2_train_score',...
 'std_fit_time', 'std_score_time', 'std_test_score', 'std_train_score'...]

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask_ml.model_selection.GridSearchCV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。