最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

在Python中加載機器學(xué)習數(shù)據(jù)教程

2021-11-12 19:35 作者:深度之眼官方賬號  | 我要投稿

剛開始進行數(shù)據(jù)加載學(xué)習時,最好使用標準文件格式(如逗號分隔值 (.csv)),最好堅持使用小型內(nèi)存數(shù)據(jù)集。


本教程主要介紹的內(nèi)容是如何從頭開始在Python中加載數(shù)據(jù),具體內(nèi)容有以下3方面:

  • 如何加載 CSV 文件。

  • 如何將字符串從文件轉(zhuǎn)換為浮點數(shù)。

  • 如何將類值從文件轉(zhuǎn)換為整數(shù)。

基礎(chǔ)準備

小型數(shù)據(jù)集的標準文件格式是逗號分隔值或CSV。

在最簡單的形式中,CSV 文件由數(shù)據(jù)行組成。每行使用逗號 (“,”) 分為列。

您可以在RFC 4180:逗號分隔值 (CSV)文件的通用格式和MIME類型中了解有關(guān)CSV文件格式的更多信息。

傳送門:https://datatracker.ietf.org/doc/html/rfc4180

在本教程中,我們要練習CSV格式加載兩個不同的標準機器學(xué)習數(shù)據(jù)集。


數(shù)據(jù)集準備

皮馬印第安人糖尿病數(shù)據(jù)集

第一個是皮馬印第安人糖尿病數(shù)據(jù)集,該數(shù)據(jù)集有9 列768行。

文件中的所有值都是數(shù)字,特別是浮點值。我們需要首先學(xué)習如何加載文件,然后學(xué)習如何將加載的字符串轉(zhuǎn)換為數(shù)值。

數(shù)據(jù)集文件:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv

數(shù)據(jù)集詳細信息:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.names

鳶尾花物種數(shù)據(jù)集

我們使用的第二個數(shù)據(jù)集是鳶尾花數(shù)據(jù)集。


它包含150行和4列。前3列是數(shù)字。不同之處在于類值(最后一列)是一個字符串,表示花的種類。我們將學(xué)習如何將數(shù)字列從字符串轉(zhuǎn)換為數(shù)字,以及如何將花種字符串轉(zhuǎn)換為我們可以一致使用的整數(shù)。


數(shù)據(jù)集文件:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv

數(shù)據(jù)集詳細信息:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.names


代碼步驟


準備好數(shù)據(jù)集之后,教程正式開始。加載自己的數(shù)據(jù)所需的基礎(chǔ)步驟:

  • 加載文件。

  • 加載文件并將字符串轉(zhuǎn)換為浮點數(shù)。

  • 加載文件并將字符串轉(zhuǎn)換為整數(shù)。

1.加載CSV文件

第一步是加載 CSV 文件。

我們將使用作為標準庫一部分的csv模塊。

csv模塊中的reader()函數(shù)將文件作為參數(shù)。

我們將創(chuàng)建一個名為load_csv()的函數(shù)來包裝此行為,該行為將采用文件名并返回我們的數(shù)據(jù)集。我們將加載的數(shù)據(jù)集表示為列表列表。第一個列表是觀察值或行的列表,第二個列表是給定行的列值列表。

以下是加載CSV文件的完整功能的代碼:



我們可以通過加載Pima Indians數(shù)據(jù)集來測試這個功能。下載數(shù)據(jù)集并將其放置在名為pima-indians-diabetes.csv的當前工作目錄中。打開文件并刪除底部的所有空行。

查看原始數(shù)據(jù)文件的前5行,我們可以看到以下內(nèi)容:

數(shù)據(jù)是數(shù)字并用逗號分隔,我們可以期望整個文件滿足這個期望。

讓我們使用新函數(shù)并加載數(shù)據(jù)集。加載后,我們可以報告一些簡單的詳細信息,例如加載的行數(shù)和列數(shù)。

將所有這些放在一起,我們得到以下內(nèi)容:

運行這個例子我們看到:

這個函數(shù)的一個限制是它會從數(shù)據(jù)文件中加載空行并將它們添加到我們的行列表中。我們可以通過一次向我們的數(shù)據(jù)集添加一行數(shù)據(jù)并跳過空行來克服這個問題。

下面是使用這個新改進版本的load_csv()函數(shù)的更新示例。

運行這個例子我們看到:


2. 將字符串轉(zhuǎn)換為浮點數(shù)

機器學(xué)習算法數(shù)據(jù)中首選浮點數(shù)。

我們加載CSV文件的代碼將數(shù)據(jù)集作為列表列表返回,但每個值都是一個字符串。如果我們從數(shù)據(jù)集中打印出一條記錄,我們可以看到這一點:

這會產(chǎn)生如下輸出:

我們可以編寫一個小函數(shù)來將加載的數(shù)據(jù)集的特定列轉(zhuǎn)換為浮點值。

下面是這個名為str_column_to_float() 的函數(shù)。它將數(shù)據(jù)集中的給定列轉(zhuǎn)換為浮點值,在進行轉(zhuǎn)換之前小心地從值中去除任何空格。

我們可以通過結(jié)合上面的加載 CSV 函數(shù)來測試這個函數(shù),并將 Pima Indians 數(shù)據(jù)集中的所有數(shù)字數(shù)據(jù)轉(zhuǎn)換為浮點值。

完整示例如下。

運行這個例子,我們看到數(shù)據(jù)集的第一行在轉(zhuǎn)換之前和之后都打印出來。我們可以看到每列中的值都已從字符串轉(zhuǎn)換為數(shù)字。

3. 將字符串轉(zhuǎn)換為整數(shù)

鳶尾花數(shù)據(jù)集類似于 Pima Indians 數(shù)據(jù)集,其中列包含數(shù)字數(shù)據(jù)。

區(qū)別在于最后一列,傳統(tǒng)上用于保存給定行要預(yù)測的結(jié)果或值。鳶尾花數(shù)據(jù)中的最后一列是作為字符串的鳶尾花種類。

下載數(shù)據(jù)集并將其放置在當前工作目錄中,文件名為iris.csv。打開文件并刪除底部的所有空行。

例如,下面是原始數(shù)據(jù)集的前 5 行。

一些機器學(xué)習算法更喜歡所有值都是數(shù)字,包括結(jié)果或預(yù)測值。

我們可以通過創(chuàng)建地圖將鳶尾花數(shù)據(jù)集中的類值轉(zhuǎn)換為整數(shù)。

首先,我們找到所有唯一的類值,它們恰好是:Iris-setosa、Iris-versicolor 和 Iris-virginica。

接下來,我們?yōu)槊總€分配一個整數(shù)值,例如:0、1 和 2。

最后,我們用相應(yīng)的整數(shù)值替換所有出現(xiàn)的類字符串值。

下面是一個名為str_column_to_int()的函數(shù)。與之前介紹的str_column_to_float() 一樣,它對數(shù)據(jù)集中的單個列進行操作。

除了前兩個用于加載CSV文件和將列轉(zhuǎn)換為浮點值的函數(shù)之外,我們還可以測試這個新函數(shù)。它還返回類值到整數(shù)值的字典映射,以防下游用戶想要再次將預(yù)測轉(zhuǎn)換回字符串值。

下面的示例加載 iris 數(shù)據(jù)集,然后將前3列轉(zhuǎn)換為浮點數(shù),將最后一列轉(zhuǎn)換為整數(shù)值。

運行這個例子會產(chǎn)生下面的輸出。

我們可以看到數(shù)據(jù)類型轉(zhuǎn)換前后數(shù)據(jù)集的第一行。我們還可以看到類值到整數(shù)的字典映射。

考慮到每個問題可能需要進行各種數(shù)據(jù)清理和轉(zhuǎn)換,數(shù)據(jù)加載就是一項艱巨的任務(wù)。


總結(jié)

我們可以進行許多擴展,以使這些示例對新的和不同的數(shù)據(jù)文件更加好用??梢钥紤]自己研究和實施一下下面的想法:

檢測并刪除文件頂部或底部的空行。

檢測和處理列中的缺失值。

檢測和處理與文件其余部分的預(yù)期不匹配的行。

支持其他分隔符,例如“|”(pipe)或空白。

支持更高效的數(shù)據(jù)結(jié)構(gòu),如數(shù)組。



在Python中加載機器學(xué)習數(shù)據(jù)教程的評論 (共 條)

使用qq登录你需要登录后才可以评论。
广东省| 华阴市| 米脂县| 穆棱市| 松阳县| 清镇市| 牟定县| 商城县| 泉州市| 衡山县| 循化| 澄江县| 神农架林区| 台安县| 大荔县| 丽江市| 慈溪市| 玉山县| 宿迁市| 张家川| 洛扎县| 施秉县| 融水| 甘南县| 竹溪县| 师宗县| 邛崃市| 武强县| 来凤县| 安阳县| 青神县| 洪雅县| 陆河县| 广德县| 合肥市| 夏津县| 东莞市| 武城县| 浙江省| 那曲县| 万宁市|