用法:
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
一起工作。- parameters:dict
以參數名稱(字符串)作為鍵和分布或要嘗試的參數列表的字典。發行版必須提供
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_state:int,RandomState 實例或無,可選,默認值:無
如果是int,random_state是隨機數生成器使用的種子;如果是RandomState實例,random_state是隨機數生成器;如果沒有,隨機數生成器是
np.random
使用的 RandomState 實例。- scoring:字符串,可調用,列表/元組,字典或無,默認值:無
單個字符串(參見評分參數:定義模型評估規則)或可調用的(見從度量函數定義你的評分策略) 來評估對測試集的預測。
為了評估多個指標,或者給出一個(唯一的)字符串列表,或者給出一個名稱作為鍵、可調用對象作為值的字典。
請注意,使用自定義記分器時,每個記分器應返回一個值。返回值列表/數組的度量函數可以包裝到多個記分器中,每個記分器返回一個值。
有關示例,請參閱指定多個指標進行評估。
如果沒有,則使用估計器的默認記分器(如果可用)。
- verbose:bool,float,int,可選,默認值:False
如果為 False(默認),則不打印日誌(或將它們通過管道傳輸到標準輸出)。但是,仍將使用標準日誌記錄。
如果為 True,則打印日誌並使用標準日誌記錄。
如果浮點數,打印/記錄大約
verbose
部分時間。- prefix:str,可選,默認=””
記錄時,將
prefix
添加到每條消息。- predict_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
與估計器
predict
調用的輸出類型匹配的空pd.Series
,pd.DataFrame
,np.array
。對於某些估算器使用dask.dataframe
和dask.array
而言,此元是必需的- predict_proba_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
與估計器
predict_proba
調用的輸出類型匹配的空pd.Series
,pd.DataFrame
,np.array
。對於某些估算器使用dask.dataframe
和dask.array
而言,此元是必需的- transform_meta: pd.Series, pd.DataFrame, np.array deafult: None(infer):
與估計器
transform
調用的輸出類型匹配的空pd.Series
,pd.DataFrame
,np.array
。對於某些估算器使用dask.dataframe
和dask.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}
,其中key
是params
中的每個鍵。
test_score
鍵中的值對應於模型在保留數據集上收到的最後一個分數。鍵model_id
對應於history_
。這個字典可以導入到 Pandas 中。- model_history_:字典列表的字典
每個模型曆史的字典。這是
history_
的重組:存在相同的信息,但按模型組織。該數據具有
{model_id: hist}
結構,其中hist
是history_
的子集,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)
通常,額外的訓練在訓練結束時會導致很少或根本沒有分數增長。在這些情況下,停止訓練是有益的,因為更多的訓練沒有任何好處,並且需要更少的計算。兩個參數控製檢測“增益很小或沒有增益”:
patience
和tol
。如果在最近對model.partial_fit
的patience
調用中至少一個分數高於其他分數tol
,則訓練繼續。例如,設置
tol=0
和patience=2
意味著訓練將在連續兩次調用model.partial_fit
後停止,或者在達到max_iter
總調用model.partial_fit
時停止。
相關用法
- Python dask_ml.model_selection.GridSearchCV用法及代碼示例
- Python dask_ml.model_selection.train_test_split用法及代碼示例
- Python dask_ml.model_selection.HyperbandSearchCV用法及代碼示例
- Python dask_ml.model_selection.RandomizedSearchCV用法及代碼示例
- Python dask_ml.metrics.mean_squared_log_error用法及代碼示例
- Python dask_ml.metrics.r2_score用法及代碼示例
- Python dask_ml.metrics.mean_squared_error用法及代碼示例
- Python dask_ml.metrics.accuracy_score用法及代碼示例
- Python dask_ml.metrics.mean_absolute_error用法及代碼示例
- Python dask_ml.metrics.log_loss用法及代碼示例
- Python dask_ml.wrappers.ParallelPostFit用法及代碼示例
- Python dask_ml.feature_extraction.text.CountVectorizer用法及代碼示例
- Python dask_ml.preprocessing.MinMaxScaler用法及代碼示例
- Python dask_ml.preprocessing.Categorizer用法及代碼示例
- Python dask_ml.linear_model.LinearRegression用法及代碼示例
- Python dask_ml.wrappers.Incremental用法及代碼示例
- Python dask_ml.preprocessing.OrdinalEncoder用法及代碼示例
- Python dask_ml.feature_extraction.text.FeatureHasher用法及代碼示例
- Python dask_ml.preprocessing.LabelEncoder用法及代碼示例
- Python dask_ml.ensemble.BlockwiseVotingClassifier用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask_ml.model_selection.IncrementalSearchCV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。