第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

TensorFlow 入門教程

首頁 慕課教程 TensorFlow 入門教程 TensorFlow 入門教程 使用 TF 加載 DateFrame 數(shù)據(jù)

使用 TensorFlow 加載 pandas.DataFrame 數(shù)據(jù)

DataFrame,直譯叫做“數(shù)據(jù)幀”,是一種二位數(shù)據(jù),也就是說 DataFrame 是一種以表格形式存儲數(shù)據(jù)的數(shù)據(jù)格式。

因?yàn)樵跈C(jī)器學(xué)習(xí)之中最常用的表格數(shù)據(jù)格式是 CSV 格式的表格數(shù)據(jù),因此機(jī)器學(xué)習(xí)領(lǐng)域的 DataFrame 絕大多數(shù)都是由 CSV 文件讀取而來的。因此這節(jié)課我們主要學(xué)習(xí)如何從 CSV 數(shù)據(jù)之中讀取 DataFrame 數(shù)據(jù)并且將其轉(zhuǎn)化為 TensorFlow 能夠使用的數(shù)據(jù)集合。

總體來說使用 DataFrame 加載數(shù)據(jù)大致分為四步:

  • 使用 pandas 讀取數(shù)據(jù)文件為 DataFrame;
  • 對 于DataFrame 進(jìn)一步處理;
  • 將 DataFrame 數(shù)據(jù)轉(zhuǎn)化為 tf.data.Dataset;
  • 進(jìn)一步的數(shù)據(jù)處理與使用。

那么在接下來我們會以一個(gè)之前學(xué)習(xí)過的泰坦尼克數(shù)據(jù)集作為簡單的示例來帶領(lǐng)大家使用 pandas.DataFrame 讀取并加載數(shù)據(jù)。

1. 使用 pandas 讀取數(shù)據(jù)文件為 DataFrame

首先我們需要在機(jī)器上安裝 pandas,如果在安裝 TensorFlow 的過程中沒有自動安裝 pandas ,那么我們就需要手動安裝 pandas :

pip install pandas

對于 CSV 文件,我們只需要使用 pd.read_csv() 函數(shù)就可以正確地讀取CSV文件中的數(shù)據(jù)為 DataFrame 格式數(shù)據(jù)。

具體來說,我們可以通過以下代碼進(jìn)行操作:

import pandas as pd
import tensorflow as tf

train_file = tf.keras.utils.get_file("train.csv", "https://storage.googleapis.com/tf-datasets/titanic/train.csv")

train_df = pd.read_csv(train_file)
train_df.head()

其中,tf.keras.utils.get_file 是我們之前學(xué)習(xí)過的獲得數(shù)據(jù)集合文件。而最后一行的 train_df.head() 是顯示數(shù)據(jù)集合的前 5 條數(shù)據(jù),我們可以得到輸出為:

圖片描述

2. 對 DataFrame 進(jìn)一步處理

在這一個(gè)步驟之中,我們要進(jìn)行的工作主要有:

  • 離散數(shù)據(jù)離散化,并且進(jìn)行編碼;
  • 分離標(biāo)簽與數(shù)據(jù)。

對于離散數(shù)據(jù)離散化,我們可以使用 pandas 內(nèi)置的 pd.Categorical() 方法進(jìn)行;而后我們需要進(jìn)行的是離散數(shù)據(jù)的編碼,此時(shí)我們可以通過 DataFrame.xxx.cat.codes 來實(shí)現(xiàn),其中 xxx 為 DataFrame 的屬性。

具體我們可以通過以下代碼實(shí)現(xiàn):

train_df['sex'] = pd.Categorical(train_df['sex'])
train_df['sex'] = train_df.sex.cat.codes

train_df['deck'] = pd.Categorical(train_df['deck'])
train_df['deck'] = train_df.deck.cat.codes

train_df['embark_town'] = pd.Categorical(train_df['embark_town'])
train_df['embark_town'] = train_df.embark_town.cat.codes

train_df['alone'] = pd.Categorical(train_df['alone'])
train_df['alone'] = train_df.alone.cat.codes

train_df['classes'] = pd.Categorical(train_df['class'])
train_df['classes'] = train_df.classes.cat.codes
train_df.pop('class')

train_df.head()

我們可以得到如下輸出:

圖片描述

可以發(fā)現(xiàn),之前的離散數(shù)據(jù)現(xiàn)在都已經(jīng)使用整數(shù)進(jìn)行編碼了。

要分離標(biāo)簽與數(shù)據(jù),我們可以直接通過 pop() 函數(shù)來實(shí)現(xiàn):

labels = train_df.pop('survived')

3. 構(gòu)建 tf.data.Dataset 數(shù)據(jù)集

在這一步,我們可以使用之前的方法 tf.data.Dataset.from_tensor_slices 來進(jìn)行數(shù)據(jù)集的構(gòu)造。

對于該示例,我們可以通過以下代碼實(shí)現(xiàn):

train_dataset = tf.data.Dataset.from_tensor_slices((train_df.values, labels.values))
train_dataset = train_dataset.shuffle(len(train_df)).batch(32)

4. 數(shù)據(jù)集的使用

在這里,我們使用和之前相似的模型進(jìn)行演示,于是我們首先定義一個(gè)分類器,然后進(jìn)行訓(xùn)練。

具體代碼如下所示:

model = tf.keras.Sequential([
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(64, activation='relu'),
  tf.keras.layers.Dense(1, activation='sigmoid'),
])

model.compile(
    loss='binary_crossentropy',
    optimizer='adam',
    metrics=['accuracy'])
model.fit(train_dataset, epochs=30)

我們可以得到結(jié)果:

......
Epoch 29/30
20/20 [==============================] - 0s 1ms/step - loss: 0.4398 - accuracy: 0.8086
Epoch 30/30
20/20 [==============================] - 0s 2ms/step - loss: 0.4332 - accuracy: 0.8214

我們可以發(fā)現(xiàn),我們的模型在訓(xùn)練集合上達(dá)到了 82% 的準(zhǔn)確率。

5. 小結(jié)

在本節(jié)課之中,我們學(xué)習(xí)了如何使用 pandas.DataFrame 來進(jìn)行數(shù)據(jù)集合的加載。在加載的過程之中,我們首先要讀取數(shù)據(jù),然后對離散數(shù)據(jù)進(jìn)行進(jìn)一步的處理,再者構(gòu)建 tf.data.Dataset 用于以后的訓(xùn)練使用。

圖片描述