<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國際加速解決方案。 廣告
                # 如何在Python中從頭開始加載機器學習數據 > 原文: [https://machinelearningmastery.com/load-machine-learning-data-scratch-python/](https://machinelearningmastery.com/load-machine-learning-data-scratch-python/) 您必須知道如何加載數據,然后才能使用它來訓練機器學習模型。 在開始時,最好使用標準文件格式(如逗號分隔值(.csv))來堅持使用小型內存數據集。 在本教程中,您將了解如何從頭開始在Python中加載數據,包括: * 如何加載CSV文件。 * 如何將字符串從文件轉換為浮點數。 * 如何將類值從文件轉換為整數。 讓我們開始吧。 * **2016年11月更新**:增加了改進的數據加載功能,以跳過空行。 * **更新Aug / 2018** :經過測試和更新,可與Python 3.6配合使用。 ![How to Load Machine Learning Data From Scratch In Python](img/2fe1327d264ccbc63c79513f4fa3fd1c.jpg) 如何在Python中從頭開始加載機器學習數據 照片由 [Amanda B](https://www.flickr.com/photos/muddybones/5550623402/) ,保留一些權利。 ## 描述 ### 逗號分隔值 小數據集的標準文件格式是逗號分隔值或CSV。 最簡單的形式是,CSV文件由數據行組成。每行使用逗號(“,”)分成列。 您可以在 [RFC 4180:逗號分隔值(CSV)文件](https://tools.ietf.org/html/rfc4180)的通用格式和MIME類型中了解有關CSV文件格式的更多信息。 在本教程中,我們將練習以CSV格式加載兩個不同的標準機器學習數據集。 ### 皮馬印第安人糖尿病數據集 第一個是皮馬印第安人糖尿病數據集。它包含768行和9列。 文件中的所有值都是數字,特別是浮點值。我們將首先學習如何加載文件,然后學習如何將加載的字符串轉換為數值。 您可以在 [UCI機器學習庫](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)上了解有關此數據集的更多信息。 ### 鳶尾花種類數據集 我們將使用的第二個數據集是虹膜花數據集。 它包含150行和4列。前3列是數字。不同之處在于,類值(最終列)是一個字符串,表示一種花。我們將學習如何將數字列從字符串轉換為數字以及如何將花種字符串轉換為我們可以一致使用的整數。 您可以在 [UCI機器學習庫](http://archive.ics.uci.edu/ml/datasets/Iris)上了解有關此數據集的更多信息。 ## 教程 本教程分為3個部分: 1. 加載文件。 2. 加載文件并將字符串轉換為浮點數。 3. 加載文件并將字符串轉換為整數。 這些步驟將為您處理加載自己的數據提供所需的基礎。 ### 1.加載CSV文件 第一步是加載CSV文件。 我們將使用作為標準庫一部分的 [csv模塊](https://docs.python.org/2/library/csv.html)。 csv模塊中的 **reader()**函數將文件作為參數。 我們將創建一個名為 **load_csv()**的函數來包裝此行為,該行為將采用文件名并返回我們的數據集。我們將加載的數據集表示為列表列表。第一個列表是觀察或行的列表,第二個列表是給定行的列值列表。 以下是加載CSV文件的完整功能。 ```py from csv import reader # Load a CSV file def load_csv(filename): file = open(filename, "r") lines = reader(file) dataset = list(lines) return dataset ``` 我們可以通過加載Pima Indians數據集來測試這個函數。下載數據集并將其放在當前工作目錄中,名稱為 **pima-indians-diabetes.csv** 。打開文件并刪除底部的任何空行。 看一下原始數據文件的前5行,我們可以看到以下內容: ```py 6,148,72,35,0,33.6,0.627,50,1 1,85,66,29,0,26.6,0.351,31,0 8,183,64,0,0,23.3,0.672,32,1 1,89,66,23,94,28.1,0.167,21,0 0,137,40,35,168,43.1,2.288,33,1 ``` 數據是數字的,用逗號分隔,我們可以期望整個文件符合這個期望。 讓我們使用新函數并加載數據集。加載后,我們可以報告一些簡單的細節,例如加載的行數和列數。 將所有這些放在一起,我們得到以下結果: ```py from csv import reader # Load a CSV file def load_csv(filename): file = open(filename, "r") lines = reader(file) dataset = list(lines) return dataset # Load dataset filename = 'pima-indians-diabetes.csv' dataset = load_csv(filename) print('Loaded data file {0} with {1} rows and {2} columns').format(filename, len(dataset), len(dataset[0])) ``` 運行此示例我們看到: ```py Loaded data file pima-indians-diabetes.csv with 768 rows and 9 columns ``` 此函數的一個限制是它將從數據文件加載空行并將它們添加到我們的行列表中。我們可以通過向數據集一次添加一行數據并跳過空行來解決這個問題。 下面是 **load_csv()**函數的這個新改進版本的更新示例。 ```py # Example of loading Pima Indians CSV dataset from csv import reader # Load a CSV file def load_csv(filename): dataset = list() with open(filename, 'r') as file: csv_reader = reader(file) for row in csv_reader: if not row: continue dataset.append(row) return dataset # Load dataset filename = 'pima-indians-diabetes.csv' dataset = load_csv(filename) print('Loaded data file {0} with {1} rows and {2} columns').format(filename, len(dataset), len(dataset[0])) ``` Running this example we see: ```py Loaded data file pima-indians-diabetes.csv with 768 rows and 9 columns ``` ### 2.將字符串轉換為浮點數 大多數(如果不是全部)機器學習算法都喜歡使用數字。 具體而言,優選浮點數。 我們用于加載CSV文件的代碼將數據集作為列表列表返回,但每個值都是一個字符串。如果我們從數據集中打印出一條記錄,我們可以看到這一點: ```py print(dataset[0]) ``` 這會產生如下輸出: ```py ['6', '148', '72', '35', '0', '33.6', '0.627', '50', '1'] ``` 我們可以編寫一個小函數來將我們加載的數據集的特定列轉換為浮點值。 下面是這個函數叫做 **str_column_to_float()**。它會將數據集中的給定列轉換為浮點值,小心地在進行轉換之前從值中去除任何空格。 ```py def str_column_to_float(dataset, column): for row in dataset: row[column] = float(row[column].strip()) ``` 我們可以通過將它與上面的加載CSV函數相結合來測試此函數,并將Pima Indians數據集中的所有數值數據轉換為浮點值。 完整的例子如下。 ```py from csv import reader # Load a CSV file def load_csv(filename): file = open(filename, "rb") lines = reader(file) dataset = list(lines) return dataset # Convert string column to float def str_column_to_float(dataset, column): for row in dataset: row[column] = float(row[column].strip()) # Load pima-indians-diabetes dataset filename = 'pima-indians-diabetes.csv' dataset = load_csv(filename) print('Loaded data file {0} with {1} rows and {2} columns').format(filename, len(dataset), len(dataset[0])) print(dataset[0]) # convert string columns to float for i in range(len(dataset[0])): str_column_to_float(dataset, i) print(dataset[0]) ``` 運行此示例,我們看到在轉換之前和之后打印的數據集的第一行。我們可以看到每列中的值已從字符串轉換為數字。 ```py Loaded data file pima-indians-diabetes.csv with 768 rows and 9 columns ['6', '148', '72', '35', '0', '33.6', '0.627', '50', '1'] [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0, 1.0] ``` ### 3.將字符串轉換為整數 虹膜花數據集與Pima Indians數據集類似,因為列包含數字數據。 差異是最后一列,傳統上用于保存給定行的預測結果或值。虹膜花數據中的最后一列是鳶尾花種。 下載數據集并將其放在當前工作目錄中,文件名為 **iris.csv** 。打開文件并刪除底部的任何空行。 例如,下面是原始數據集的前5行。 ```py 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa ``` 一些機器學習算法更喜歡所有值都是數字,包括結果或預測值。 我們可以通過創建地圖將虹膜花數據集中的類值轉換為整數。 1. 首先,我們找到所有獨特的類值,恰好是:Iris-setosa,Iris-versicolor和Iris-virginica。 2. 接下來,我們為每個分配一個整數值,例如:0,1和2。 3. 最后,我們將所有出現的類字符串值替換為相應的整數值。 下面是一個只調用 **str_column_to_int()**的函數。與之前介紹的 **str_column_to_float()**一樣,它在數據集中的單個列上運行。 ```py # Convert string column to integer def str_column_to_int(dataset, column): class_values = [row[column] for row in dataset] unique = set(class_values) lookup = dict() for i, value in enumerate(unique): lookup[value] = i for row in dataset: row[column] = lookup[row[column]] return lookup ``` 除了前兩個函數之外,我們還可以測試這個新函數,以加載CSV文件并將列轉換為浮點值。它還將類值的字典映射返回到整數值,以防下游任何用戶希望再次將預測轉換回字符串值。 下面的示例加載iris數據集,然后將前3列轉換為浮點數,將最后一列轉換為整數值。 ```py from csv import reader # Load a CSV file def load_csv(filename): file = open(filename, "rb") lines = reader(file) dataset = list(lines) return dataset # Convert string column to float def str_column_to_float(dataset, column): for row in dataset: row[column] = float(row[column].strip()) # Convert string column to integer def str_column_to_int(dataset, column): class_values = [row[column] for row in dataset] unique = set(class_values) lookup = dict() for i, value in enumerate(unique): lookup[value] = i for row in dataset: row[column] = lookup[row[column]] return lookup # Load iris dataset filename = 'iris.csv' dataset = load_csv(filename) print('Loaded data file {0} with {1} rows and {2} columns').format(filename, len(dataset), len(dataset[0])) print(dataset[0]) # convert string columns to float for i in range(4): str_column_to_float(dataset, i) # convert class column to int lookup = str_column_to_int(dataset, 4) print(dataset[0]) print(lookup) ``` 運行此示例將生成下面的輸出。 我們可以在數據類型轉換之前和之后看到數據集的第一行。我們還可以看到類值到整數的字典映射。 ```py Loaded data file iris.csv with 150 rows and 5 columns ['5.1', '3.5', '1.4', '0.2', 'Iris-setosa'] [5.1, 3.5, 1.4, 0.2, 1] {'Iris-virginica': 0, 'Iris-setosa': 1, 'Iris-versicolor': 2} ``` ## 擴展 您學習了如何加載CSV文件和執行基本數據轉換。 考慮到從問題到問題可能需要的各種數據清理和轉換,數據加載可能是一項困難的任務。 您可以進行許多擴展,以使這些示例對新的和不同的數據文件更加健壯。以下是您可以考慮自己研究和實施的一些想法: * 檢測并刪除文件頂部或底部的空行。 * 檢測并處理列中的缺失值。 * 檢測并處理與文件其余部分的期望不匹配的行。 * 支持其他分隔符,例如“|”(管道)或空格。 * 支持更高效的數據結構,如數組。 您可能希望在實踐中用于加載CSV數據的兩個庫是NumPy和Pandas。 NumPy提供 [loadtxt()](http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html)函數,用于將數據文件作為NumPy數組加載。 Pandas提供 [read_csv()](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)功能,它在數據類型,文件頭等方面提供了很大的靈活性。 ## 評論 在本教程中,您了解了如何在Python中從頭開始加載機器學習數據。 具體來說,你學到了: * 如何將CSV文件加載到內存中。 * 如何將字符串值轉換為浮點值。 * 如何將字符串類值轉換為整數編碼。 您對加載機器學習數據或此帖子有任何疑問嗎? 在評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看