<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 3.2. 調整估計器的超參數 校驗者: [@想和太陽肩并肩](https://github.com/apachecn/scikit-learn-doc-zh) 翻譯者: [@\\S^R^Y/](https://github.com/apachecn/scikit-learn-doc-zh) 超參數,即不直接在估計器內學習的參數。在 scikit-learn 包中,它們作為估計器類中構造函數的參數進行傳遞。典型的例子有:用于支持向量分類器的 `C` 、`kernel` 和 `gamma` ,用于Lasso的 `alpha` 等。 搜索超參數空間以便獲得最好 [交叉驗證](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/cross_validation.html#cross-validation) 分數的方法是可能的而且是值得提倡的。 通過這種方式,構造估計器時被提供的任何參數或許都能被優化。具體來說,要獲取到給定估計器的所有參數的名稱和當前值,使用: ``` estimator.get_params() ``` 搜索包括: - 估計器(回歸器或分類器,例如 `sklearn.svm.SVC()`) - 參數空間 - 搜尋或采樣候選的方法 - 交叉驗證方案 - [計分函數](#gridsearch-scoring) 有些模型支持專業化的、高效的參數搜索策略, [描述如下](#alternative-cv) 。在 scikit-learn 包中提供了兩種采樣搜索候選的通用方法:對于給定的值, [GridSearchCV](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV) 考慮了所有參數組合;而 [RandomizedSearchCV](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV) 可以從具有指定分布的參數空間中抽取給定數量的候選。介紹完這些工具后,我們將詳細介紹適用于這兩種方法的 [最佳實踐](#grid-search-tips) 。 **注意**,通常這些參數的一小部分會對模型的預測或計算性能有很大的影響,而其他參數可以保留為其默認值。 建議閱讀估計器類的相關文檔,以更好地了解其預期行為,可能的話還可以閱讀下引用的文獻。 ## 3.2.1. 網格追蹤法–窮盡的網格搜索 `GridSearchCV` 提供的網格搜索從通過 `param_grid` 參數確定的網格參數值中全面生成候選。例如,下面的 `param_grid`: ``` param_grid = [ {'C': [1, 10, 100, 1000], 'kernel': ['linear']}, {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']}, ] ``` 探索兩個網格的詳細解釋: 一個具有線性內核并且C在\[1,10,100,1000\]中取值; 另一個具有RBF內核,C值的交叉乘積范圍在\[1,10,100,1000\],gamma在\[0.001,0.0001\]中取值。 `GridSearchCV` 實例實現了常用估計器 API:當在數據集上“擬合”時,參數值的所有可能的組合都會被評估,從而計算出最佳的組合。 示例: - 有關在數字數據集上的網格搜索計算示例,請參閱 [基于交叉驗證的網格搜索參數估計](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/plot_grid_search_digits.html#sphx-glr-auto-examples-model-selection-plot-grid-search-digits-py)。 - 有關來自文本文檔特征提取器(n-gram計數向量化器和TF-IDF變換器)的網格搜索耦合參數與分類器(這里是使用具有彈性網格的SGD訓練的線性SVM 或L2懲罰)使用 pipeline.Pipeline 示例,請參閱 [用于文本特征提取和評估的示例管道](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/grid_search_text_feature_extraction.html#sphx-glr-auto-examples-model-selection-grid-search-text-feature-extraction-py)。 - 有關iris數據集的交叉驗證循環中的網格搜索示例, 請參閱 [嵌套與非嵌套交叉驗證](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/plot_nested_cross_validation_iris.html#sphx-glr-auto-examples-model-selection-plot-nested-cross-validation-iris-py)。 - 有關用于同時評估多個指標的GridSearchCV示例,請參閱 [cross\_val\_score 與 GridSearchCV 多指標評價的實證研究](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/plot_multi_metric_evaluation.html#sphx-glr-auto-examples-model-selection-plot-multi-metric-evaluation-py)。 ## 3.2.2. 隨機參數優化 盡管使用參數設置的網格法是目前最廣泛使用的參數優化方法, 其他搜索方法也具有更有利的性能。 [RandomizedSearchCV](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV) 實現了對參數的隨機搜索, 其中每個設置都是從可能的參數值的分布中進行取樣。 這對于窮舉搜索有兩個主要優勢: - 可以選擇獨立于參數個數和可能值的預算 - 添加不影響性能的參數不會降低效率 指定如何取樣的參數是使用字典完成的, 非常類似于為 `GridSearchCV` 指定參數。 此外, 通過 `n_iter` 參數指定計算預算, 即取樣候選項數或取樣迭代次數。 對于每個參數, 可以指定在可能值上的分布或離散選擇的列表 (均勻取樣): ``` {'C': scipy.stats.expon(scale=100), 'gamma': scipy.stats.expon(scale=.1), 'kernel': ['rbf'], 'class_weight':['balanced', None]} ``` 本示例使用 `scipy.stats` 模塊, 它包含許多用于采樣參數的有用分布, 如 `expon`,`gamma`,`uniform` 或者 `randint`。 原則上, 任何函數都可以通過提供一個 `rvs` (隨機變量樣本)方法來采樣一個值。 對 `rvs` 函數的調用應在連續調用中提供來自可能參數值的獨立隨機樣本。 > Warning > > The distributions in `scipy.stats` prior to version scipy 0.16 do not allow specifying a random state. Instead, they use the global numpy random state, that can be seeded via `np.random.seed` or set using `np.random.set_state`. However, beginning scikit-learn 0.18, the [sklearn.model\_selection](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/classes.html#module-sklearn.model_selection) module sets the random state provided by the user if scipy >= 0.16 is also available. 對于連續參數 (如上面提到的 `C` ),指定連續分布以充分利用隨機化是很重要的。這樣,有助于 `n_iter` 總是趨向于更精細的搜索。 示例: - 隨機搜索和網格搜索的使用和效率的比較: [有關隨機搜索和網格搜索超參數估計的對比](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/plot_randomized_search.html#sphx-glr-auto-examples-model-selection-plot-randomized-search-py) 引用: - Bergstra, J. and Bengio, Y., Random search for hyper-parameter optimization, The Journal of Machine Learning Research (2012) ## 3.2.3. 參數搜索技巧 ### 3.2.3.1. 指定目標度量 默認情況下, 參數搜索使用估計器的評分函數來評估(衡量)參數設置。 比如 [sklearn.metrics.accuracy\_score](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.metrics.accuracy_score.html#sklearn.metrics.accuracy_score) 用于分類和 [sklearn.metrics.r2\_score](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.metrics.r2_score.html#sklearn.metrics.r2_score) 用于回歸。 對于一些應用, 其他評分函數將會更加適合 (例如在不平衡的分類, 精度評分往往是信息不足的)。 一個可選的評分功能可以通過評分參數指定給 `GridSearchCV`, `RandomizedSearchCV` 和許多下文將要描述的、專業化的交叉驗證工具。 有關詳細信息, 請參閱 [評分參數:定義模型評估規則](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/model_evaluation.html#scoring-parameter)。 ### 3.2.3.2. 為評估指定多個指標 `GridSearchCV` 和 `RandomizedSearchCV` 允許為評分參數指定多個指標。 多指標評分可以被指定為一個預先定義分數名稱字符串列表或者是一個得分手名字到得分手的函數或預先定義的記分員名字的映射字典。 有關詳細信息, 請參閱 [多指標評估](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/model_evaluation.html#multimetric-scoring)。 在指定多個指標時,必須將 `refit` 參數設置為要在其中找到 `best_params_`,并用于在整個數據集上構建 `best_estimator_` 的度量標準(字符串)。 如果搜索不應該 refit, 則設置 `refit=False`。在使用多個度量值時,如果將 refit 保留為默認值,不會導致結果錯誤。 有關示例用法, 請參見 [cross\_val\_score 與 GridSearchCV 多指標評價的實證研究](http://sklearn.apachecn.org/doc/cn/0.19.0/auto_examples/model_selection/plot_multi_metric_evaluation.html#sphx-glr-auto-examples-model-selection-plot-multi-metric-evaluation-py)。 ### 3.2.3.3. 復合估計和參數空間 [管道:鏈式評估器](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/pipeline.html#pipeline) 描述了如何使用這些工具搜索參數空間構建鏈式評估器。 ### 3.2.3.4. 模型選擇:開發和評估 通過評估各種參數設置,可以將模型選擇視為使用標記數據訓練網格參數的一種方法。 在評估結果模型時, 重要的是在網格搜索過程中未看到的 held-out 樣本數據上執行以下操作: 建議將數據拆分為開發集 (**development set**,供 `GridSearchCV` 實例使用)和評估集(**evaluation set**)來計算性能指標。 這可以通過使用效用函數 [train\_test\_split](http://sklearn.apachecn.org/doc/cn/0.19.0/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split) 來完成。 ### 3.2.3.5. 并行機制 `GridSearchCV` 和 `RandomizedSearchCV` 可以獨立地評估每個參數設置。如果您的OS支持,通過使用關鍵字 `n_jobs=-1` 可以使計算并行運行。 有關詳細信息, 請參見函數簽名。 ### 3.2.3.6. 對故障的魯棒性 某些參數設置可能導致無法 `fit` 數據的一個或多個折疊。 默認情況下, 這將導致整個搜索失敗, 即使某些參數設置可以完全計算。 設置 `error_score=0` (或`=np.NaN`) 將使程序對此類故障具有魯棒性,發出警告并將該折疊的分數設置為0(或`NaN`), 但可以完成搜索。 ## 3.2.4. 暴力參數搜索的替代方案 ### 3.2.4.1. 模型特定交叉驗證 某些模型可以與參數的單個值的估計值一樣有效地適應某一參數范圍內的數據。 此功能可用于執行更有效的交叉驗證, 用于此參數的模型選擇。 該策略最常用的參數是編碼正則化矩陣強度的參數。在這種情況下, 我們稱之為, 計算估計器的正則化路徑(**regularization path**)。 以下是這些模型的列表: [`linear_model.ElasticNetCV`](generated/sklearn.linear_model.ElasticNetCV.html#sklearn.linear_model.ElasticNetCV "sklearn.linear_model.ElasticNetCV")(\[l1\_ratio, eps, …\])Elastic Net model with iterative fitting along a regularization path[`linear_model.LarsCV`](generated/sklearn.linear_model.LarsCV.html#sklearn.linear_model.LarsCV "sklearn.linear_model.LarsCV")(\[fit\_intercept, …\])Cross-validated Least Angle Regression model[`linear_model.LassoCV`](generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV "sklearn.linear_model.LassoCV")(\[eps, n\_alphas, …\])Lasso linear model with iterative fitting along a regularization path[`linear_model.LassoLarsCV`](generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV "sklearn.linear_model.LassoLarsCV")(\[fit\_intercept, …\])Cross-validated Lasso, using the LARS algorithm[`linear_model.LogisticRegressionCV`](generated/sklearn.linear_model.LogisticRegressionCV.html#sklearn.linear_model.LogisticRegressionCV "sklearn.linear_model.LogisticRegressionCV")(\[Cs, …\])Logistic Regression CV (aka logit, MaxEnt) classifier.[`linear_model.MultiTaskElasticNetCV`](generated/sklearn.linear_model.MultiTaskElasticNetCV.html#sklearn.linear_model.MultiTaskElasticNetCV "sklearn.linear_model.MultiTaskElasticNetCV")(\[…\])Multi-task L1/L2 ElasticNet with built-in cross-validation.[`linear_model.MultiTaskLassoCV`](generated/sklearn.linear_model.MultiTaskLassoCV.html#sklearn.linear_model.MultiTaskLassoCV "sklearn.linear_model.MultiTaskLassoCV")(\[eps, …\])Multi-task L1/L2 Lasso with built-in cross-validation.[`linear_model.OrthogonalMatchingPursuitCV`](generated/sklearn.linear_model.OrthogonalMatchingPursuitCV.html#sklearn.linear_model.OrthogonalMatchingPursuitCV "sklearn.linear_model.OrthogonalMatchingPursuitCV")(\[…\])Cross-validated Orthogonal Matching Pursuit model (OMP)[`linear_model.RidgeCV`](generated/sklearn.linear_model.RidgeCV.html#sklearn.linear_model.RidgeCV "sklearn.linear_model.RidgeCV")(\[alphas, …\])Ridge regression with built-in cross-validation.[`linear_model.RidgeClassifierCV`](generated/sklearn.linear_model.RidgeClassifierCV.html#sklearn.linear_model.RidgeClassifierCV "sklearn.linear_model.RidgeClassifierCV")(\[alphas, …\])Ridge classifier with built-in cross-validation. ### 3.2.4.2. 信息標準 一些模型通過計算一個正則化路徑 (代替使用交叉驗證得出數個參數), 可以給出正則化參數最優估計的信息理論閉包公式。 以下是從 Akaike 信息標準 (AIC) 或貝葉斯信息標準 (可用于自動選擇模型) 中受益的模型列表: [`linear_model.LassoLarsIC`](generated/sklearn.linear_model.LassoLarsIC.html#sklearn.linear_model.LassoLarsIC "sklearn.linear_model.LassoLarsIC")(\[criterion, …\])Lasso model fit with Lars using BIC or AIC for model selection ### 3.2.4.3. 出袋估計 當使用基于裝袋的集合方法時,即使用具有替換的采樣產生新的訓練集,部分訓練集保持不用。 對于集合中的每個分類器,訓練集的不同部分被忽略。 這個省略的部分可以用來估計泛化誤差,而不必依靠單獨的驗證集。 此估計是”免費的”,因為不需要額外的數據,可以用于模型選擇。 目前該方法已經實現的類以下幾個: [`ensemble.RandomForestClassifier`](generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier "sklearn.ensemble.RandomForestClassifier")(\[…\])A random forest classifier.[`ensemble.RandomForestRegressor`](generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor "sklearn.ensemble.RandomForestRegressor")(\[…\])A random forest regressor.[`ensemble.ExtraTreesClassifier`](generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier "sklearn.ensemble.ExtraTreesClassifier")(\[…\])An extra-trees classifier.[`ensemble.ExtraTreesRegressor`](generated/sklearn.ensemble.ExtraTreesRegressor.html#sklearn.ensemble.ExtraTreesRegressor "sklearn.ensemble.ExtraTreesRegressor")(\[n\_estimators, …\])An extra-trees regressor.[`ensemble.GradientBoostingClassifier`](generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier "sklearn.ensemble.GradientBoostingClassifier")(\[loss, …\])Gradient Boosting for classification.[`ensemble.GradientBoostingRegressor`](generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor "sklearn.ensemble.GradientBoostingRegressor")(\[loss, …\])Gradient Boosting for regression.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看