<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.5. 驗證曲線: 繪制分數以評估模型 校驗者: [@正版喬](https://github.com/apachecn/scikit-learn-doc-zh) [@小瑤](https://github.com/apachecn/scikit-learn-doc-zh) 翻譯者: [@Xi](https://github.com/apachecn/scikit-learn-doc-zh) 每種估計器都有其優勢和缺陷。它的泛化誤差可以用偏差、方差和噪聲來分解。估計值的偏差 **bias** 是不同訓練集的平均誤差。估計值的方差 **variance** 用來表示它對訓練集的 變化有多敏感。噪聲是數據的一個屬性。 在下面的圖中,我們可以看到一個函數 [:math:`f(x) = \\cos (\\frac{3}{2} \\pi x)`\_](#id2) 和一些來自該函數的的帶噪聲數據的樣本。 我們用三個不同的估計來擬合函數:多項式特征為 1,4 和 15 的線性回歸。我們看到,第一個估計最多只能為樣本和真正的函數提供一個很差的擬合 ,因為它太簡單了(高偏差),第二個估計幾乎完全近似,最后一個估計完全接近訓練數據, 但不能很好地擬合真實的函數,即對訓練數據的變化(高方差)非常敏感。 [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_underfitting_overfitting_0011.png](https://box.kancloud.cn/498647d6de7d1c1790532a917b930b38_566x202.jpg)](../auto_examples/model_selection/plot_underfitting_overfitting.html) 偏差和方差是估計的固有屬性,我們通常必須選擇合適的學習算法和超參數,以使偏差和 方差都盡可能的低(參見偏差方差困境 [`Bias-variance dilemma<https://en.wikipedia.org/wiki/Bias-variance\_dilemma>`\_](#id6))。 減少模型方差的另一種方法是使用更多的訓練數據。 如果真實函數過于復雜,不能用一個方 差較小的估計來近似,則只能去收集更多的訓練數據。 在示例里簡單的一維問題中,我們可以很容易看出估計是否存在偏差或方差。 然而,在高維空間中, 模型可能變得非常難以可視化。 因此,使用下面所描述的工具通常是有幫助的。 示例: - [Underfitting vs. Overfitting](../auto_examples/model_selection/plot_underfitting_overfitting.html#sphx-glr-auto-examples-model-selection-plot-underfitting-overfitting-py) - [Plotting Validation Curves](../auto_examples/model_selection/plot_validation_curve.html#sphx-glr-auto-examples-model-selection-plot-validation-curve-py) - [Plotting Learning Curves](../auto_examples/model_selection/plot_learning_curve.html#sphx-glr-auto-examples-model-selection-plot-learning-curve-py) ## 3.5.1. 驗證曲線 為了驗證一個模型,我們需要一個評分函數(參見模型評估:[模型評估: 量化預測的質量](model_evaluation.html#model-evaluation)), 例如分類器的準確性。 選擇估計器的多個超參數的正確方法當然是網格搜索或類似方法 (參見調整估計的超參數 [調整估計器的超參數](grid_search.html#grid-search) ),其選擇一個或多個驗證集上的分數最高的超參數。 請注意,如果我們基于驗證分數優化了超參數,則驗證分數就有偏差了,并且不再是一個良好的泛化估計。 為了得到正確的泛化估計,我們必須在另一個測試集上計算得分。 然而,繪制單個超參數對訓練分數和驗證分數的影響,有時有助于發現該估計是否因為某些超參數 而出現過擬合或欠擬合。 本例中,下面的方程 [`validation_curve`](generated/sklearn.model_selection.validation_curve.html#sklearn.model_selection.validation_curve "sklearn.model_selection.validation_curve") 能起到如下作用: ``` >>> import numpy as np >>> from sklearn.model_selection import validation_curve >>> from sklearn.datasets import load_iris >>> from sklearn.linear_model import Ridge ``` ``` >>> np.random.seed(0) >>> iris = load_iris() >>> X, y = iris.data, iris.target >>> indices = np.arange(y.shape[0]) >>> np.random.shuffle(indices) >>> X, y = X[indices], y[indices] ``` ``` >>> train_scores, valid_scores = validation_curve(Ridge(), X, y, "alpha", ... np.logspace(-7, 3, 3)) >>> train_scores array([[ 0.94..., 0.92..., 0.92...], [ 0.94..., 0.92..., 0.92...], [ 0.47..., 0.45..., 0.42...]]) >>> valid_scores array([[ 0.90..., 0.92..., 0.94...], [ 0.90..., 0.92..., 0.94...], [ 0.44..., 0.39..., 0.45...]]) ``` 如果訓練得分和驗證得分都很低,則估計器是欠擬合的。 如果訓練得分高,驗證得分低,則估計器過擬合, 否則估計會擬合得很好。 通常不可能有較低的訓練得分和較高的驗證得分。 所有三種情況都可以 在下面的圖中找到,其中我們改變了數字數據集上 SVM 的參數 ![\gamma](https://box.kancloud.cn/502b69cbaa2eaab1fc4bf35906e10418_10x12.jpg) 。 [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_validation_curve_0011.png](https://box.kancloud.cn/cd0e300a681596ab3b5a32602b3a9f93_566x424.jpg)](../auto_examples/model_selection/plot_validation_curve.html) ## 3.5.2. 學習曲線 學習曲線顯示了對于不同數量的訓練樣本的估計器的驗證和訓練評分。它可以幫助我們發現從增加更多的訓 練數據中能獲益多少,以及估計是否受方差誤差或偏差誤差的影響更大。如果驗證分數和訓練 分數都收斂到一個相對于增加的訓練集大小來說過低的值,那么我們將不能從更多的訓練數據 中獲益。在下面的圖中看到一個例子:樸素貝葉斯大致收斂到一個較低的分數。 [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_learning_curve_0011.png](https://box.kancloud.cn/c223efa6f9a43f85316f326763454824_566x424.jpg)](../auto_examples/model_selection/plot_learning_curve.html) 我們可能需要使用可以學習更復雜概念(即具有較低偏差)的當前估計的一個估計值或參數化。 如果訓練樣本的最大時,訓練分數比驗證分數得分大得多,那么增加訓練樣本很可能會增加泛化能力。 在下面的圖中,可以看到支持向量機可以從更多的訓練樣本中獲益。 [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_learning_curve_0021.png](https://box.kancloud.cn/fb3c4eb9a7bb542e243073ae94ac8f2c_566x424.jpg)](../auto_examples/model_selection/plot_learning_curve.html) 我們可以使用函數 [`learning_curve`](generated/sklearn.model_selection.learning_curve.html#sklearn.model_selection.learning_curve "sklearn.model_selection.learning_curve") 繪制這樣的學習曲線(已使用的樣本數,訓練集 上的平均分數和驗證集上的平均分數)所需的值: ``` >>> from sklearn.model_selection import learning_curve >>> from sklearn.svm import SVC >>> train_sizes, train_scores, valid_scores = learning_curve( ... SVC(kernel='linear'), X, y, train_sizes=[50, 80, 110], cv=5) >>> train_sizes array([ 50, 80, 110]) >>> train_scores array([[ 0.98..., 0.98 , 0.98..., 0.98..., 0.98...], [ 0.98..., 1. , 0.98..., 0.98..., 0.98...], [ 0.98..., 1. , 0.98..., 0.98..., 0.99...]]) >>> valid_scores array([[ 1. , 0.93..., 1. , 1. , 0.96...], [ 1. , 0.96..., 1. , 1. , 0.96...], [ 1. , 0.96..., 1. , 1. , 0.96...]]) ```
                  <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>

                              哎呀哎呀视频在线观看