高效、自動化的資料準備在機器學習中的重要性怎麼強調都不為過,並且經常用熟悉的公理“垃圾進,垃圾出”來概括。這凸顯了資料質量在決定機器學習模型成功與否方面發揮的關鍵作用。
隨著資料集規模和複雜性的增加,對可靠管道的需求變得越來越重要。 這些管道對於確保機器學習模型的質量和準確性是必要的。
對於企業來說,乙個改變遊戲規則的方面是在邊緣開發和部署資料準備管道的能力。 此功能提高了靈活性和可擴充套件性,使機器學習工程師能夠在不同的平台上部署管道 - 從單個硬體到由區域或分支機構管理的資料中心,甚至電信機櫃。 如本教程所示,可伸縮性允許這些管道從小規模開始,並在任何商業硬體上無縫擴充套件。
本教程可作為使用 Minio(一種高效能、相容 S3-API 的開源物件儲存系統)和 Minio 的 Python SDK 構建強大資料管道的指南。
在當前資料私隱問題日益嚴重的背景下,建立內部控制是沒有商量餘地的。 本教程重點介紹在整個資料準備過程中保護敏感資訊的最佳做法。
當我們了解自動化資料準備、邊緣部署和資料私隱注意事項的複雜性時,請跟隨我們的腳步,為這些核心原則奠定基礎。
在開始之前,請確保您的系統上安裝了以下必備元件:
docker) [ compose docker combo [.]
如果從頭開始,則可以使用適用於您平台的 Docker Desktop 安裝程式進行安裝。 您可以通過執行以下命令來檢查是否安裝了 docker:
docker-compose --version
首先,轉殖教程 git 儲存庫。
在終端視窗中,cd 轉到儲存庫中的 minio-ml-data-prep 目錄並執行以下命令:
docker-compose up minio
當您執行此命令時,它會啟動 minio 服務,允許 minio 伺服器通過 docker-compose 傳遞YML 檔案。
在瀏覽器中,使用您的預設憑據導航並登入 minio 控制台:使用者名稱 minioadmin 和密碼 minioadmin。
當 minio 在乙個終端視窗中執行時,開啟第二個終端視窗並再次導航到 minio-ml-data-prep 目錄。 執行以下命令:
docker-compose up init-minio
此命令執行 python 指令碼 init-miniopy 。此指令碼使用 Minio Python SDK 與 Minio 伺服器進行互動,並負責建立兩個儲存桶:RAW 和 CLEAN(如果它們尚不存在)。
下面是指令碼作用的詳細說明:
桶建立功能:create bucket(如果不存在)函式檢查指定的桶是否存在。 如果儲存桶不存在,請使用 make bucket 建立儲存桶並列印成功訊息。 如果儲存桶已存在,請列印一條訊息,指示該儲存桶已存在。
建立原始和乾淨的儲存桶:然後,該指令碼呼叫兩次 Create Bucket If Not exists 函式,一次用於原始儲存桶,一次用於乾淨儲存桶。 這可確保在需要時建立兩個儲存桶。
錯誤處理:該指令碼包括錯誤處理,使用 try-except 塊捕獲和列印儲存桶建立期間可能發生的任何 s3errors。 這可確保指令碼適當地處理潛在問題,例如網路問題或憑據不正確。
導航到 以檢查是否已成功建立 RAW 和 CLEAN 儲存桶。
接下來,在終端視窗中執行以下命令:
docker-compose up generate-data
此命令執行 python 指令碼 generate-and-upload-fake-datapy 是乙個指令碼,用於生成包含個人身份資訊 (PII) 的虛假資料,將其儲存為本地 parquet 檔案,然後將檔案上傳到 minio raw 儲存桶,演示了將基本資料攝取到 minio 物件儲存系統中的過程。
下面是指令碼正在執行的操作的進一步細分:
生成假資料:生成假資料功能使用假庫建立包含各種假資料字段的字典。 字段包括姓名、電子郵件、位址、**號碼、社會保險號 (SSN)、隨機字串、隨機數和員工詳細資訊,例如職位、部門、工資和雇用日期。
將資料另存為 parquet:s**e as parquet 函式將生成的假資料儲存為 parquet 檔案。 它將資料轉換為 pandas 資料幀,然後轉換為 pyarrow 表,最後將其作為 parquet 檔案寫入資料目錄。
上傳到 Minio:上傳到 Minio 功能將本地 parquet 檔案上傳到 Minio 儲存桶。 它計算檔案大小,以二進位模式開啟檔案,並使用 minio 客戶端將物件上傳到給定物件名稱的指定儲存桶。
生成並上傳多個檔案:生成並上傳到 minio 函式迭代指定次數(預設為 10 次)生成虛假資料,將其儲存為 parquet 檔案,並上傳到 minio raw 儲存桶。
指定 Minio 原始儲存桶:指令碼將 minio 原始儲存桶名稱指定為 raw。
導航到 以檢查原始儲存桶是否已成功填充資料。
執行以下命令,清理生成的資料:
docker-compose up data-transform
此命令執行乙個指令碼,該指令碼自動執行清理個人身份資訊的過程。 它讀取儲存在原始 minio 儲存桶中的資料,然後將清理後的資料上傳到清理儲存桶。 這演示了資料準備工作流中重要的資料私隱步驟。
PII 清理:Scrub PII 功能獲取 pandas 資料幀並刪除個人身份資訊 (PII) 字段,例如姓名、電子郵件、位址、**號碼和 SSN。
清理並上傳到 minio:清理並上傳到 minio 函式迭代指定數量的檔案(預設為 10)。 對於每個檔案,它執行以下操作:
將 parquet 檔案從 minio 上的原始儲存桶**移動到本地目錄。
將 parquet 檔案讀入 pandas 資料幀。
應用 scrub pii 函式從資料幀中刪除 pii。
將清理後的資料幀轉換回 pyarrow 表。
將清理後的表寫入本地目錄中的新 parquet 檔案。
將清理後的 parquet 檔案上傳到 Minio 上的 Clean 儲存桶。
如果您想更深入地檢視檔案以確保它們正確轉換,您可以在 Minio 中的某個檔案上執行以下指令碼。
您可以通過程式設計方式或通過控制台**檔案執行此操作。
import pandas as pd
import pyarrow.parquet as pq
def print_parquet(file_path, num_rows=5):
# read parquet file into a pyarrow table
table = pq.read_table(file_path)
# extract a pandas dataframe from the table
df = table.to_pandas()
# set display options to show all columns without truncation
pd.set_option('display.max_columns', none)
pd.set_option('display.expand_frame_repr', false)
# print the first few rows of the dataframe
print(df.head(num_rows))
# specify the path to your parquet file
parquet_file_path = "path/to/your/file.parquet"
# print the first 5 rows of the parquet file with tidy column display
print_parquet(parquet_file_path)
在“清潔”中執行此操作時在 parquet 檔案上執行指令碼時,將看到終端的輸出,如下所示:
準備好刪除容器、卷和生成的資料後,請執行以下命令:
docker-compose down
本教程將引導您了解使用 Minio 的 SDK 自動進行機器學習資料準備的基本方面。
現在,當你構建和探索了這些資料管道時,請考慮如何在它們的基礎上進行構建。 探索與其他資料來源整合、實施高階轉換或增強現有私隱和安全措施的方法。 本教程充當啟動板,鼓勵你根據機器學習專案的獨特需求和挑戰來創新和自定義這些管道。
繼續探索Minio的SDK和物件儲存系統的功能,嘗試不同型別的資料,並及時了解該領域的最新發展。 通過以本教程中學到的知識為基礎,你將很好地掌握機器學習的自動化資料準備技術。
如需購買,請聯絡minio China。