<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/prepare-data-machine-learning-python-scikit-learn/](https://machinelearningmastery.com/prepare-data-machine-learning-python-scikit-learn/) 許多機器學習算法都會對您的數據做出假設。 以這種方式準備數據通常是一個非常好的主意,以便最好地將問題的結構暴露給您打算使用的機器學習算法。 在這篇文章中,您將了解如何使用 scikit-learn 為 Python 中的機器學習準備數據。 讓我們開始吧。 * **更新 March / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![How To Prepare Your Data For Machine Learning in Python with Scikit-Learn](https://img.kancloud.cn/23/52/2352aa9bed8db671c54e139f3f00f43d_640x427.jpg) 如何使用 Scikit-Learn 照片由 [Vinoth Chandar](https://www.flickr.com/photos/vinothchandar/5612099123/) 為 Python 機器學習準備數據,保留一些權利。 ## 需要數據預處理 您幾乎總是需要預處理數據。這是必需的步驟。 困難在于不同的算法對您的數據做出不同的假設,并且可能需要不同的變換。此外,當您遵循所有規則并準備數據時,有時算法可以在不進行預處理的情況下提供更好的結果。 通常,我建議您創建許多不同的視圖和數據轉換,然后在數據集的每個視圖上運行一些算法。這將有助于您清除哪些數據轉換可能更好地暴露您的問題結構。 ## 預處理機器學習秘籍 本節列出了 4 種用于機器學習的不同數據預處理秘籍。 所有秘籍都設計為完整且獨立的。 您可以將它們直接復制并粘貼到項目中并開始工作。 [Pima 印度糖尿病](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)數據集用于每個秘籍。這是一個二元分類問題,其中所有屬性都是數字的,并且具有不同的比例。這是可以從預處理中受益的數據集的一個很好的例子。 您可以在 [UCI 機器學習庫](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)網頁上了解有關此數據集的更多信息(更新:[從此處下載](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。 每個秘籍都遵循相同的結構: 1. 從 URL 加載數據集。 2. 將數據集拆分為輸入和輸出變量以進行機器學習。 3. 對輸入變量應用預處理變換。 4. 總結數據以顯示更改。 變換的計算方式使它們可以應用于您的訓練數據以及將來可能擁有的任何數據樣本。 [scikit-learn 文檔](http://scikit-learn.org/stable/modules/preprocessing.html)提供了有關如何使用各種不同預處理方法的一些信息。您可以在此處查看 scikit-learn 中的[預處理 API。](http://scikit-learn.org/stable/modules/classes.html#module-sklearn.preprocessing) ### 1.重新調整數據 當您的數據由具有不同比例的屬性組成時,許多機器學習算法可以從重新調整屬性中受益,所有屬性具有相同的比例。 這通常被稱為歸一化,并且屬性通常被重新調整到 0 和 1 之間的范圍。這對于在諸如梯度下降的機器學習算法的核心中使用的優化算法是有用的。對于使用諸如回歸和神經網絡之類的輸入以及使用諸如 K-Nearest Neighbors 之類的距離度量的算法的算法,它也是有用的。 您可以使用 [MinMaxScaler](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html) 類使用 scikit-learn 重新調整數據。 ``` # Rescale data (between 0 and 1) import pandas import scipy import numpy from sklearn.preprocessing import MinMaxScaler 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 # separate array into input and output components X = array[:,0:8] Y = array[:,8] scaler = MinMaxScaler(feature_range=(0, 1)) rescaledX = scaler.fit_transform(X) # summarize transformed data numpy.set_printoptions(precision=3) print(rescaledX[0:5,:]) ``` 重新縮放后,您可以看到所有值都在 0 到 1 之間。 ``` [[ 0.353 0.744 0.59 0.354 0\. 0.501 0.234 0.483] [ 0.059 0.427 0.541 0.293 0\. 0.396 0.117 0.167] [ 0.471 0.92 0.525 0\. 0\. 0.347 0.254 0.183] [ 0.059 0.447 0.541 0.232 0.111 0.419 0.038 0\. ] [ 0\. 0.688 0.328 0.354 0.199 0.642 0.944 0.2 ]] ``` ### 2.標準化數據 標準化是一種有用的技術,可以使用[高斯分布](https://en.wikipedia.org/wiki/Normal_distribution)轉換屬性,并將不同的均值和標準差轉換為平均值為 0 且標準差為 1 的標準高斯分布。 它最適合于在輸入變量中假設高斯分布并且對重新縮放的數據更好地工作的技術,例如線性回歸,邏輯回歸和線性判別分析。 您可以使用 [StandardScaler](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html) 類使用 scikit-learn 標準化數據。 ``` # Standardize data (0 mean, 1 stdev) from sklearn.preprocessing import StandardScaler import pandas import numpy 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 # separate array into input and output components X = array[:,0:8] Y = array[:,8] scaler = StandardScaler().fit(X) rescaledX = scaler.transform(X) # summarize transformed data numpy.set_printoptions(precision=3) print(rescaledX[0:5,:]) ``` 現在,每個屬性的值的平均值為 0,標準差為 1。 ``` [[ 0.64 0.848 0.15 0.907 -0.693 0.204 0.468 1.426] [-0.845 -1.123 -0.161 0.531 -0.693 -0.684 -0.365 -0.191] [ 1.234 1.944 -0.264 -1.288 -0.693 -1.103 0.604 -0.106] [-0.845 -0.998 -0.161 0.155 0.123 -0.494 -0.921 -1.042] [-1.142 0.504 -1.505 0.907 0.766 1.41 5.485 -0.02 ]] ``` ### 3.規范化數據 scikit-learn 中的規范化是指將每個觀察(行)重新縮放為長度為 1(在線性代數中稱為單位范數)。 當使用加權輸入值的算法(如神經網絡和使用距離測量的算法,如 K-Nearest Neighbors)時,此預處理對于具有不同比例屬性的稀疏數據集(大量零)非常有用。 您可以使用 [Normalizer](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Normalizer.html) 類通過 scikit-learn 對 Python 中的數據進行規范化。 ``` # Normalize data (length of 1) from sklearn.preprocessing import Normalizer import pandas import numpy 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 # separate array into input and output components X = array[:,0:8] Y = array[:,8] scaler = Normalizer().fit(X) normalizedX = scaler.transform(X) # summarize transformed data numpy.set_printoptions(precision=3) print(normalizedX[0:5,:]) ``` 行被標準化為長度 1。 ``` [[ 0.034 0.828 0.403 0.196 0\. 0.188 0.004 0.28 ] [ 0.008 0.716 0.556 0.244 0\. 0.224 0.003 0.261] [ 0.04 0.924 0.323 0\. 0\. 0.118 0.003 0.162] [ 0.007 0.588 0.436 0.152 0.622 0.186 0.001 0.139] [ 0\. 0.596 0.174 0.152 0.731 0.188 0.01 0.144]] ``` ### 4.二值化數據(制作二進制) 您可以使用二進制閾值轉換數據。高于閾值的所有值都標記為 1,所有等于或低于的值都標記為 0。 這稱為二值化數據或閾值數據。當你有想要制作清晰價值的概率時,它會很有用。它在特征工程中很有用,并且您希望添加指示有意義的內容的新功能。 您可以使用 scikit-learn 與 [Binarizer](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Binarizer.html) 類在 Python 中創建新的二進制屬性。 ``` # binarization from sklearn.preprocessing import Binarizer import pandas import numpy 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 # separate array into input and output components X = array[:,0:8] Y = array[:,8] binarizer = Binarizer(threshold=0.0).fit(X) binaryX = binarizer.transform(X) # summarize transformed data numpy.set_printoptions(precision=3) print(binaryX[0:5,:]) ``` 您可以看到所有等于或小于 0 的值都標記為 0,而所有高于 0 的值都標記為 1。 ``` [[ 1\. 1\. 1\. 1\. 0\. 1\. 1\. 1.] [ 1\. 1\. 1\. 1\. 0\. 1\. 1\. 1.] [ 1\. 1\. 1\. 0\. 0\. 1\. 1\. 1.] [ 1\. 1\. 1\. 1\. 1\. 1\. 1\. 1.] [ 0\. 1\. 1\. 1\. 1\. 1\. 1\. 1.]] ``` ## 摘要 在這篇文章中,您了解了如何使用 scikit-learn 為 Python 中的機器學習準備數據。 你現在有秘籍: * 重新調整數據。 * 標準化數據。 * 規范化數據。 * 二值化數據。 此帖子的操作步驟是鍵入或復制并粘貼每個秘籍,熟悉 scikit-learn 中的數據預處理。 您對 Python 或本文中的數據預處理有任何疑問嗎?在評論中提問,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看