<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 如何在 Python 中使用 XGBoost 評估梯度提升模型 > 原文: [https://machinelearningmastery.com/evaluate-gradient-boosting-models-xgboost-python/](https://machinelearningmastery.com/evaluate-gradient-boosting-models-xgboost-python/) 開發預測模型的目標是開發一個對看不見的數據準確的模型。 這可以使用統計技術來實現,其中訓練數據集被仔細地用于估計模型在新的和未看到的數據上的表現。 在本教程中,您將了解如何使用 Python 中的 XGBoost 評估梯度提升模型的表現。 完成本教程后,您將了解到。 * 如何使用訓練和測試數據集評估 XGBoost 模型的表現。 * 如何使用 k-fold 交叉驗證評估 XGBoost 模型的表現。 讓我們開始吧。 * **2017 年 1 月更新**:已更新,以反映 scikit-learn API 版本 0.18.1 中的更改??。 * **更新 March / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![How to Evaluate Gradient Boosting Models with XGBoost in Python](https://img.kancloud.cn/99/19/991981f71acce4daaea9dff59cad14bb_640x360.jpg) 如何在 Python 中使用 XGBoost 評估梯度提升模型 照片由 [Timitrius](https://www.flickr.com/photos/nox_noctis_silentium/5526750448/) ,保留一些權利。 ## 使用訓練和測試集評估 XGBoost 模型 我們可以用來評估機器學習算法表現的最簡單方法是使用不同的訓練和測試數據集。 我們可以將原始數據集分成兩部分。在第一部分訓練算法,然后對第二部分進行預測,并根據預期結果評估預測。 拆分的大小可能取決于數據集的大小和細節,盡管通常使用 67%的數據進行訓練,剩余的 33%用于測試。 該算法評估技術很快。它非常適用于大型數據集(數百萬條記錄),其中有強有力的證據表明數據的兩個分裂都代表了潛在的問題。由于速度的原因,當您正在調查的算法訓練緩慢時,使用此方法很有用。 這種技術的缺點是它可能具有很大的差異。這意味著訓練和測試數據集的差異可能導致模型精度估計的有意義差異。 我們可以使用 scikit-learn 庫中的 **train_test_split()**函數將數據集拆分為訓練和測試集。例如,我們可以將數據集拆分為 67%和 33%的分組,用于訓練和測試集,如下所示: ```py # split data into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=7) ``` 下面使用 [Pima 印第安人糖尿病數據集](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)開始提供完整的代碼清單,假設它位于當前工作目錄中(更新:[從這里下載](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。具有默認配置的 XGBoost 模型適合訓練數據集并在測試數據集上進行評估。 ```py # train-test split evaluation of xgboost model from numpy import loadtxt from xgboost import XGBClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # load data dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") # split data into X and y X = dataset[:,0:8] Y = dataset[:,8] # split data into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=7) # fit model no training data model = XGBClassifier() model.fit(X_train, y_train) # make predictions for test data y_pred = model.predict(X_test) predictions = [round(value) for value in y_pred] # evaluate predictions accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0)) ``` 運行此示例總結了測試集上模型的表現。 ```py Accuracy: 77.95% ``` ## 使用 k-fold 交叉驗證評估 XGBoost 模型 交叉驗證是一種可用于估計機器學習算法表現的方法,其方差小于單個訓練測試集拆分。 它的工作原理是將數據集分成 k 部分(例如 k = 5 或 k = 10)。每次分割數據稱為折疊。該算法在 k-1 折疊上進行訓練,其中一個被扣住并在保持的背部折疊上進行測試。重復這一過程,以便數據集的每個折疊都有機會成為阻礙測試集。 運行交叉驗證后,您最終得到 k 個不同的表現分數,您可以使用均值和標準差來總結。 結果是在給定測試數據的情況下,對新數據的算法表現進行更可靠的估計。它更準確,因為算法在不同數據上被多次訓練和評估。 k 的選擇必須允許每個測試分區的大小足夠大以成為問題的合理樣本,同時允許對算法的訓練測試評估的足夠重復以提供對看不見的數據的算法表現的公平估計。 。對于數千或數萬個觀測值中的適度大小的數據集,k 值為 3,5 和 10 是常見的。 我們可以使用 scikit-learn 中提供的 k-fold 交叉驗證支持。首先,我們必須創建 [KFold](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.KFold.html) 對象,指定折疊的數量和數據集的大小。然后,我們可以將此方案與特定數據集一起使用。來自 scikit-learn 的 **cross_val_score()**函數允許我們使用交叉驗證方案評估模型,并返回每個折疊上訓練的每個模型的分數列表。 ```py kfold = KFold(n_splits=10, random_state=7) results = cross_val_score(model, X, Y, cv=kfold) ``` 下面提供了用于評估具有 k 折交叉驗證的 XGBoost 模型的完整代碼清單,以確保完整性。 ```py # k-fold cross validation evaluation of xgboost model from numpy import loadtxt import xgboost from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score # load data dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") # split data into X and y X = dataset[:,0:8] Y = dataset[:,8] # CV model model = xgboost.XGBClassifier() kfold = KFold(n_splits=10, random_state=7) results = cross_val_score(model, X, Y, cv=kfold) print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) ``` 運行此示例總結了數據集上默認模型配置的表現,包括平均值和標準差分類精度。 ```py Accuracy: 76.69% (7.11%) ``` 如果您有許多類用于分類類型預測建模問題,或者類是不平衡的(一個類的實例比另一個類多得多),那么在執行交叉驗證時創建分層折疊可能是個好主意。 這具有在執行交叉驗證評估時在每個折疊中強制執行與在整個訓練數據集中相同的類分布的效果。 scikit-learn 庫在 [StratifiedKFold](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedKFold.html) 類中提供此功能。 下面是修改為使用分層交叉驗證來評估 XGBoost 模型的相同示例。 ```py # stratified k-fold cross validation evaluation of xgboost model from numpy import loadtxt import xgboost from sklearn.model_selection import StratifiedKFold from sklearn.model_selection import cross_val_score # load data dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") # split data into X and y X = dataset[:,0:8] Y = dataset[:,8] # CV model model = xgboost.XGBClassifier() kfold = StratifiedKFold(n_splits=10, random_state=7) results = cross_val_score(model, X, Y, cv=kfold) print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) ``` 運行此示例將生成以下輸出。 ```py Accuracy: 76.95% (5.88%) ``` ## 什么技術使用時 * 通常,k 折交叉驗證是用于評估機器學習算法在看不見的數據上的表現的金標準,其中 k 設置為 3,5 或 10。 * 當存在大量類或每個類的實例不平衡時,使用分層交叉驗證來強制執行類分發。 * 使用慢速算法時,使用訓練/測試分割有利于提高速度,并在使用大型數據集時產生具有較低偏差的表現估計。 最好的建議是試驗并找到一種快速解決問題的技術,并產生可用于制定決策的合理表現估算。 如果有疑問,請對回歸問題使用 10 倍交叉驗證,并對分類問題進行 10 倍交叉驗證。 ## 摘要 在本教程中,您了解了如何通過估計 XGBoost 模型在未見數據上的執行情況來評估它們。 具體來說,你學到了: * 如何將數據集拆分為訓練和測試子集以進行訓練和評估模型的表現。 * 如何在數據集的不同子集上創建 k XGBoost 模型并平均得分以獲得更穩健的模型表現估計。 * 啟發式幫助您在問題中選擇訓練測試拆分和 k 折交叉驗證。 您對如何評估 XGBoost 模型或該帖子的表現有任何疑問嗎?在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看