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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 用 scikit-learn 在 Python 中集成機器學習算法 > 原文: [https://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/](https://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/) 合奏可以提高數據集的準確性。 在這篇文章中,您將了解如何使用 scikit-learn 在 Python 中創建一些最強大的集合類型。 本案例研究將引導您完成 Boosting,Bagging 和 Majority Voting,并向您展示如何繼續提高您自己數據集上模型的準確性。 讓我們開始吧。 * **2017 年 1 月更新**:已更新,以反映版本 0.18 中 scikit-learn API 的更改。 * **更新 March / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![Ensemble Machine Learning Algorithms in Python with scikit-learn](https://img.kancloud.cn/e8/90/e89055e25277671721d14386c3381e18_640x426.jpg) 使用 scikit-learn 照片的[照片由美國陸軍樂隊](https://www.flickr.com/photos/usarmyband/6830189060/),部分權利保留。 ## 將模型預測結合到集合預測中 結合不同模型預測的三種最流行的方法是: * **套袋**。從訓練數據集的不同子樣本構建多個模型(通常是相同類型)。 * **提升**。構建多個模型(通常是相同類型),每個模型都學習如何修復鏈中先前模型的預測誤差。 * **投票**。構建多個模型(通常具有不同類型)和簡單統計(如計算均值)用于組合預測。 這篇文章不會解釋這些方法。 它假設您通常熟悉機器學習算法和集合方法,并且您正在尋找有關如何在 Python 中創建集合的信息。 ## 關于秘籍 這篇文章中的每個秘籍都是獨立設計的。這樣您就可以將其復制并粘貼到項目中并立即開始使用。 來自 UCI 機器學習庫的標準分類問題用于演示每個集合算法。這是[皮馬印第安人糖尿病數據集的發病](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)(更新:[從這里下載](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。這是一個二元分類問題,其中所有輸入變量都是數字的并且具有不同的比例。 每個集合算法使用 10 倍交叉驗證進行演示,這是一種標準技術,用于估計任何機器學習算法對未見數據的表現。 ## 套袋算法 Bootstrap 聚合或裝袋涉及從訓練數據集中獲取多個樣本(替換)并為每個樣本訓練模型。 最終輸出預測在所有子模型的預測中取平均值。 本節涉及的三種裝袋模型如下: 1. 袋裝決策樹 2. 隨機森林 3. 額外的樹木 ### 1.袋裝決策樹 Bagging 在具有高差異的算法中表現最佳。一個流行的例子是決策樹,通常是在沒有修剪的情況下構建的。 在下面的示例中,請參閱使用 BaggingClassifier 和分類和回歸樹算法( [DecisionTreeClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html) )的示例。共創造了 100 棵樹。 ``` # Bagged Decision Trees for Classification import pandas from sklearn import model_selection from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) cart = DecisionTreeClassifier() num_trees = 100 model = BaggingClassifier(base_estimator=cart, n_estimators=num_trees, random_state=seed) results = model_selection.cross_val_score(model, X, Y, cv=kfold) print(results.mean()) ``` 運行該示例,我們可以獲得對模型精度的可靠估計。 ``` 0.770745044429 ``` ### 2.隨機森林 隨機森林是袋裝決策樹的擴展。 訓練數據集的樣本是替換的,但樹的構造方式會減少各個分類器之間的相關性。具體而言,不是貪婪地選擇樹的構造中的最佳分裂點,而是僅考慮每個分裂的隨機特征子集。 您可以使用 [RandomForestClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) 類構建隨機森林模型進行分類。 下面的示例提供了一個隨機森林的示例,用于對 100 棵樹進行分類,并從隨機選擇的 3 個特征中選擇分割點。 ``` # Random Forest Classification import pandas from sklearn import model_selection from sklearn.ensemble import RandomForestClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 num_trees = 100 max_features = 3 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = RandomForestClassifier(n_estimators=num_trees, max_features=max_features) results = model_selection.cross_val_score(model, X, Y, cv=kfold) print(results.mean()) ``` 運行該示例提供了分類準確度的平均估計。 ``` 0.770727956254 ``` ### 3.額外的樹木 額外樹木是套袋的另一種修改,其中隨機樹是根據訓練數據集的樣本構建的。 您可以使用 [ExtraTreesClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html) 類構建 Extra Trees 模型以進行分類。 下面的示例演示了額外的樹,樹的數量設置為 100,并且從 7 個隨機要素中選擇了分割。 ``` # Extra Trees Classification import pandas from sklearn import model_selection from sklearn.ensemble import ExtraTreesClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 num_trees = 100 max_features = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = ExtraTreesClassifier(n_estimators=num_trees, max_features=max_features) results = model_selection.cross_val_score(model, X, Y, cv=kfold) print(results.mean()) ``` Running the example provides a mean estimate of classification accuracy. ``` 0.760269993165 ``` ## 提升算法 提升集合算法會創建一系列模型,嘗試在序列中糾正模型之前的錯誤。 一旦創建,模型進行預測,可以通過其顯示的準確度加權,并將結果組合以創建最終輸出預測。 兩種最常見的增強集成機器學習算法是: 1. AdaBoost 的 2. 隨機梯度提升 ### 1\. AdaBoost AdaBoost 可能是第一個成功的增強集成算法。它通常通過對數據集中的實例進行加權來對其進行分類是多么容易或困難,從而允許算法在后續模型的構造中支付或不太關注它們。 您可以使用 [AdaBoostClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) 類構建用于分類的 AdaBoost 模型。 下面的示例演示了使用 AdaBoost 算法按順序構造 30 個決策樹。 ``` # AdaBoost Classification import pandas from sklearn import model_selection from sklearn.ensemble import AdaBoostClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 num_trees = 30 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = AdaBoostClassifier(n_estimators=num_trees, random_state=seed) results = model_selection.cross_val_score(model, X, Y, cv=kfold) print(results.mean()) ``` Running the example provides a mean estimate of classification accuracy. ``` 0.76045796309 ``` ### 2.隨機梯度提升 隨機梯度增強(也稱為梯度增強機器)是最復雜的整體技術之一。它也是一種被證明可能是通過集合提高表現的最佳技術。 您可以使用 [GradientBoostingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html) 類構建一個 Gradient Boosting 模型進行分類。 下面的示例演示了隨機梯度提升用于 100 棵樹的分類。 ``` # Stochastic Gradient Boosting Classification import pandas from sklearn import model_selection from sklearn.ensemble import GradientBoostingClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 num_trees = 100 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = GradientBoostingClassifier(n_estimators=num_trees, random_state=seed) results = model_selection.cross_val_score(model, X, Y, cv=kfold) print(results.mean()) ``` Running the example provides a mean estimate of classification accuracy. ``` 0.764285714286 ``` ## 投票合奏 投票是結合多種機器學習算法的預測的最簡單方法之一。 它的工作原理是首先從訓練數據集中創建兩個或更多獨立模型。然后,當被要求對新數據進行預測時,可以使用投票分類器來包裝模型并平均子模型的預測。 可以對子模型的預測進行加權,但是手動或甚至啟發式地指定分類器的權重是困難的。更高級的方法可以學習如何最好地對來自子模型的預測進行加權,但這稱為堆疊(堆疊聚合),目前未在 scikit-learn 中提供。 您可以使用 [VotingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html) 類創建用于分類的投票集合模型。 下面的代碼提供了將邏輯回歸,分類和回歸樹以及支持向量機的預測組合在一起用于分類問題的示例。 ``` # Voting Ensemble for Classification import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.ensemble import VotingClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) # create the sub models estimators = [] model1 = LogisticRegression() estimators.append(('logistic', model1)) model2 = DecisionTreeClassifier() estimators.append(('cart', model2)) model3 = SVC() estimators.append(('svm', model3)) # create the ensemble model ensemble = VotingClassifier(estimators) results = model_selection.cross_val_score(ensemble, X, Y, cv=kfold) print(results.mean()) ``` Running the example provides a mean estimate of classification accuracy. ``` 0.712166780588 ``` ## 摘要 在這篇文章中,您發現了集成機器學習算法,用于提高模型在問題上的表現。 你了解到: * Bagging Ensembles 包括袋裝決策樹,隨機森林和額外樹木。 * 推動包括 AdaBoost 和隨機梯度提升在內的合奏。 * Voting Ensembles 用于平均任意模型的預測。 您對 scikit-learn 中的整體機器學習算法或合奏有任何疑問嗎?在評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看