tf.transform 是由 Beam 和 TensorFlow 所建構而成的,因此他一方面保有 Beam 可以快速處理大量資料的能力,令一方面又擁有 TensorFlow 計算做轉換的功能。
在昨天 Day21 的文章中,我們有提到做特徵工程的三個地方,其中在前處理的步驟,做特徵工程的話就適合使用 tf.transform,而其又可以分為兩個階段:分析(Analyze)與轉換(Transform)。
分析是指對所有資料進行分析,例如說我要找到最大最小值,或者有幾種不同的類型,這些需要對全部資料做分析才可以得到的結果,就需要借用到 Beam 特長。
轉換則是根據分析的結果做數值上的運算轉變,例如說找到最大最小值之後,我要將整體值縮放,以利梯度下降的訓練,又或者是對種類數目做 one-hot encoding。
在分析的階段,一般來說會有3個步驟:
而在轉換階段要注意地方有:
在這個實作中,我們將學會:
註:這次 Google 提供的實作程式竟然沒辦法成功的在GCP上運行起來,推測是 tf.transform 和目前 TensorFlow 版本之間有一些衝突,不過還是會講一下整個運作的流程。
登入 GCP,並在 storage 創建一個 bucket。
開啟Notebooks後,複製課程 Github repo (如Day9的Part 1 & 2步驟)。
在左邊的資料夾結構,點進 training-data-analyst > courses > machine_learning > deepdive > 04_features > taxifeateng ,然後打開檔案 tftransform.ipynb。
先安裝 Apache Beam、TensorFlow Transform 在 Python2 的相關套件:
head()
、 describe()
看一下資料基本的樣子:is_valid()
、preprocess_tft()
,分別用來檢查資料輸入的範圍和資料的格式轉換:preprocess()
,裡面涵蓋到了我們前面講的分析、轉換的步驟,詳細的程式碼可以參考這裡 (我是做到這裡會出現錯誤訊息):今天介紹了 TensorFlow Transform,明天我們將開始第五個,也是最後一個子課程Art and Science of Machine Learning。