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


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

用法:

class dask_ml.model_selection.IncrementalSearchCV(estimator, parameters, n_initial_parameters=10, decay_rate=<object object>, test_size=None, patience=False, tol=0.001, fits_per_score=1, max_iter=100, random_state=None, scoring=None, verbose=False, prefix='', scores_per_fit=None, predict_meta=None, predict_proba_meta=None, transform_meta=None)

在支持partial_fit的模型上逐步搜索hyper-parameters

這個增量hyper-parameter 優化類開始在少量數據上對許多hyper-parameters 模型進行訓練,然後隻繼續訓練那些似乎表現良好的模型。

有關更多信息,請參閱用戶指南。

參數

estimator估計器對象。

為每個初始超參數組合實例化該類型的對象。假設這實現了scikit-learn 估計器接口。估計器需要提供score` 函數,或者必須傳遞scoring。估計器必須實現 partial_fit , set_params ,並與 clone 一起工作。

parametersdict

以參數名稱(字符串)作為鍵和分布或要嘗試的參數列表的字典。發行版必須提供 rvs 抽樣方法(例如來自 scipy.stats.distributions 的抽樣方法)。如果給出一個列表,則對其進行均勻采樣。

n_initial_parameters整數,默認=10

采樣的參數設置數。這權衡了運行時間與解決方案的質量。

或者,您可以將其設置為 "grid" 以進行完整的網格搜索。

decay_rate浮點數,默認 1.0

減少部分未來適合調用的數量的速度。

patience整數,默認為假

如果指定,則在 patience 調用 partial_fit 後分數沒有增加 tol 時訓練停止。默認關閉。

fits_per_score整數,可選,默認=1

如果使用 patience,則 score 調用之間的最大 partial_fit 調用數。

scores_per_fit整數,默認 1

如果使用 patience,則 score 調用之間的最大 partial_fit 調用數。

tol浮點數,默認 0.001

考慮停止對該模型的訓練所需的改進水平。最近的分數最多隻能比該模型之前的所有 patience 分數高 tol。增加 tol 將傾向於減少訓練時間,但代價是模型更差。

max_iter整數,默認 100

每個模型的最大部分擬合調用數。

test_size浮點數

用於計算測試分數的數據集的一部分。默認為輸入訓練集的單個分區的大小

注意

訓練數據集應該適合單台機器的內存。根據需要調整test_size 參數以實現此目的。

random_stateint,RandomState 實例或無,可選,默認值:無

如果是int,random_state是隨機數生成器使用的種子;如果是RandomState實例,random_state是隨機數生成器;如果沒有,隨機數生成器是 np.random 使用的 RandomState 實例。

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

單個字符串(參見評分參數:定義模型評估規則)或可調用的(見從度量函數定義你的評分策略) 來評估對測試集的預測。

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

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

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

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

verbosebool,float,int,可選,默認值:False

如果為 False(默認),則不打印日誌(或將它們通過管道傳輸到標準輸出)。但是,仍將使用標準日誌記錄。

如果為 True,則打印日誌並使用標準日誌記錄。

如果浮點數,打印/記錄大約 verbose 部分時間。

prefixstr,可選,默認=””

記錄時,將prefix 添加到每條消息。

predict_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

與估計器 predict 調用的輸出類型匹配的空 pd.Series , pd.DataFrame , np.array。對於某些估算器使用 dask.dataframedask.array 而言,此元是必需的

predict_proba_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

與估計器 predict_proba 調用的輸出類型匹配的空 pd.Series , pd.DataFrame , np.array。對於某些估算器使用 dask.dataframedask.array 而言,此元是必需的

transform_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer)

與估計器 transform 調用的輸出類型匹配的空 pd.Series , pd.DataFrame , np.array。對於某些估算器使用 dask.dataframedask.array 而言,此元是必需的

屬性

cv_results_np.ndarrays 的字典

這本字典有鍵

  • mean_partial_fit_time
  • mean_score_time
  • std_partial_fit_time
  • std_score_time
  • test_score
  • rank_test_score
  • model_id
  • partial_fit_calls
  • params
  • param_{key} ,其中 keyparams 中的每個鍵。

test_score 鍵中的值對應於模型在保留數據集上收到的最後一個分數。鍵 model_id 對應於 history_ 。這個字典可以導入到 Pandas 中。

model_history_字典列表的字典

每個模型曆史的字典。這是 history_ 的重組:存在相同的信息,但按模型組織。

該數據具有{model_id: hist} 結構,其中histhistory_ 的子集,model_id 是模型標識符。

history_字典列表

每次partial_fit 調用後有關每個模型的信息。每個 dict 鍵

  • partial_fit_time
  • score_time
  • score
  • model_id
  • params
  • partial_fit_calls
  • elapsed_wall_time

model_id 對應於 cv_results_ 中的 model_id。這個字典列表可以導入到 Pandas 中。

best_estimator_基估計器

“inverse decay”算法保留的所有模型中驗證分數最高的模型。

best_score_浮點數

最終調用 partial_fit 後,best_estimator_ 在驗證集上獲得的分數。

best_index_int

指示cv_results_ 中哪個估計器對應於最高分數的索引。

best_params_dict

hold-out 數據中找到的最佳參數字典。

scorer_ :

用於對模型進行評分的函數,其調用簽名為 scorer_(estimator, X, y)

n_splits_int

交叉驗證拆分的數量。

multimetric_bool

此交叉驗證搜索是否使用多個指標。

例子

連接到客戶端並創建數據

>>> from dask.distributed import Client
>>> client = Client()
>>> import numpy as np
>>> from dask_ml.datasets import make_classification
>>> X, y = make_classification(n_samples=5000000, n_features=20,
...                            chunks=100000, random_state=0)

我們的基礎估計器是一個 SGDClassifier。我們為估計器的每個克隆指定了一些共同的參數。

>>> from sklearn.linear_model import SGDClassifier
>>> model = SGDClassifier(tol=1e-3, penalty='elasticnet', random_state=0)

我們將從中采樣的參數分布。

>>> params = {'alpha': np.logspace(-2, 1, num=1000),
...           'l1_ratio': np.linspace(0, 1, num=1000),
...           'average': [True, False]}
>>> search = IncrementalSearchCV(model, params, random_state=0)
>>> search.fit(X, y, classes=[0, 1])
IncrementalSearchCV(...)

或者,您可以提供以更多 hyper-parameters 開頭的關鍵字,但停止使用更多數據似乎沒有改善的關鍵字。

>>> search = IncrementalSearchCV(model, params, random_state=0,
...                              n_initial_parameters=1000,
...                              patience=20, max_iter=100)

通常,額外的訓練在訓練結束時會導致很少或根本沒有分數增長。在這些情況下,停止訓練是有益的,因為更多的訓練沒有任何好處,並且需要更少的計算。兩個參數控製檢測“增益很小或沒有增益”:patiencetol。如果在最近對 model.partial_fitpatience 調用中至少一個分數高於其他分數 tol ,則訓練繼續。

例如,設置 tol=0patience=2 意味著訓練將在連續兩次調用 model.partial_fit 後停止,或者在達到 max_iter 總調用 model.partial_fit 時停止。

相關用法


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