數(shù)據(jù)準備與預(yù)處理
通常情況下,在構(gòu)建一個模型時,您需要準備好用于模型構(gòu)建和調(diào)試所需要使用的數(shù)據(jù),并完成數(shù)據(jù)的預(yù)處理,以便后續(xù)根據(jù)業(yè)務(wù)需求進行模型開發(fā)所需的進一步加工。本示例以PAI為您提供的公開數(shù)據(jù)為例,演示數(shù)據(jù)準備與預(yù)處理的操作步驟。
前提條件
已經(jīng)新建了一個工作流,詳情請參見新建自定義工作流。
step1:進入工作流頁面
登錄PAI控制臺,在左側(cè)導(dǎo)航欄單擊工作空間列表,再單擊待操作的工作空間名稱,進入對應(yīng)工作空間內(nèi)。
在工作空間頁面的左側(cè)導(dǎo)航欄選擇 ,進入Designer頁面。
在工作流列表頁面,選中對應(yīng)工作流后,單擊進入工作流即可進入工作流頁面。
step2:準備數(shù)據(jù)
本示例使用PAI為您提供的心臟病案例的公開數(shù)據(jù)。您無需新建表、寫入表數(shù)據(jù),可直接使用讀數(shù)據(jù)表來讀取此公開數(shù)據(jù),作為數(shù)據(jù)準備。
通常情況下,您需要準備一個MaxCompute表或OSS表,并通過源/目標組件下的讀數(shù)據(jù)表、寫數(shù)據(jù)表、讀OSS數(shù)據(jù)等組件來查詢或?qū)懭霐?shù)據(jù)到表中,操作詳情可參見源/目標對應(yīng)組件文檔。
在左側(cè)組件列表的搜索框中,搜索讀數(shù)據(jù)表,找到讀數(shù)據(jù)表組件。
將讀數(shù)據(jù)表組件拖入右側(cè)畫布中,畫布中自動生成一個名稱為讀數(shù)據(jù)表-1的工作流節(jié)點。
在畫布中選中讀數(shù)據(jù)表-1節(jié)點,在右側(cè)節(jié)點配置頁面中的表名中輸入
pai_online_project.heart_disease_prediction
,讀取公開的心臟病案例的數(shù)據(jù)表。您也可以將右側(cè)的節(jié)點配置頁面切換到字段信息頁簽,查看此公開數(shù)據(jù)的字段詳情。
step3:數(shù)據(jù)預(yù)處理
本示例使用的原始數(shù)據(jù)為公開的心臟病案例的數(shù)據(jù),數(shù)據(jù)預(yù)處理以將所有字段取值歸一化為例,為您展示數(shù)據(jù)預(yù)處理的步驟。本示例的數(shù)據(jù)預(yù)處理主要包括三個處理流程:
將原始數(shù)據(jù)表中,取值為非數(shù)值類型的字段,通過SQL替換為數(shù)值類型的取值,以保證此預(yù)處理后,表中所有字段的取值都是數(shù)值類型。
將表中字段轉(zhuǎn)換為double類型,以保證此預(yù)處理后,表中字段均滿足后續(xù)歸一化處理的字段屬性要求。
將表中字段的取值均歸一化。
詳細操作如下。
數(shù)據(jù)預(yù)處理:轉(zhuǎn)換非數(shù)值類型字段。
在左側(cè)組件列表的搜索框中,搜索SQL腳本,找到SQL腳本組件。
將SQL腳本組件拖入右側(cè)畫布中,畫布中將自動生成一個名稱為SQL腳本-1的工作流節(jié)點。
通過連線,將SQL腳本-1節(jié)點的t1輸入源作為讀數(shù)據(jù)表-1節(jié)點的下游節(jié)點。
在畫布中選中SQL腳本-1節(jié)點(此時在畫布右側(cè)參數(shù)設(shè)置頁面的輸入源為t1),在右側(cè)節(jié)點配置頁面中的SQL腳本輸入框中輸入以下SQL代碼。
select age, (case sex when 'male' then 1 else 0 end) as sex, (case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp, trestbps, chol, (case fbs when 'true' then 1 else 0 end) as fbs, (case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg, thalach, (case exang when 'true' then 1 else 0 end) as exang, oldpeak, (case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop, ca, (case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal, (case status when 'sick' then 1 else 0 end) as ifHealth from ${t1};
說明SQL腳本-1節(jié)點有t1、t2、t3和t4四個輸入源。在SQL代碼示例中,${t1}表示輸入源為t1。如果您從讀數(shù)據(jù)表-1到SQL腳本-1連線的節(jié)點是t2或其他(在SQL腳本-1的參數(shù)設(shè)置頁面的輸入源會顯示對應(yīng)節(jié)點),需要修改SQL語句為對應(yīng)節(jié)點。
單擊畫布上方的運行按鈕,實驗將根據(jù)工作流順序依次運行讀數(shù)據(jù)表-1、SQL腳本-1節(jié)點。
數(shù)據(jù)預(yù)處理:將所有字段轉(zhuǎn)換為double類型。
在左側(cè)組件列表的搜索框中,搜索類型轉(zhuǎn)換,找到類型轉(zhuǎn)換組件。
將類型轉(zhuǎn)換組件拖入右側(cè)畫布中,畫布中自動生成一個名稱為類型轉(zhuǎn)換-1的工作流節(jié)點。
通過連線,將類型轉(zhuǎn)換-1節(jié)點作為SQL腳本-1節(jié)點的下游節(jié)點。
在畫布中選中類型轉(zhuǎn)換-1節(jié)點,在右側(cè)節(jié)點配置頁面中的字段設(shè)置頁簽,單擊轉(zhuǎn)換為double類型的列下的選擇字段,將所有字段轉(zhuǎn)換為double類型。
數(shù)據(jù)預(yù)處理:歸一化。
在左側(cè)組件列表的搜索框中,搜索歸一化,找到歸一化組件。
將歸一化組件拖入右側(cè)畫布中,畫布中自動生成一個名稱為歸一化-1的工作流節(jié)點。
通過連線,將歸一化-1節(jié)點作為類型轉(zhuǎn)換-1節(jié)點的下游節(jié)點。
在畫布中選中歸一化-1節(jié)點,在右側(cè)節(jié)點配置頁面中的字段設(shè)置頁簽,選擇所有字段。
在左側(cè)組件列表的搜索框中,搜索拆分,找到拆分組件后拖入畫布,并將其通過拉線作為歸一化-1節(jié)點的下游節(jié)點。
拆分組件默認將原始數(shù)據(jù)按4:1拆分為模型訓(xùn)練集和模型預(yù)測集。您也可以單擊拆分組件,在右側(cè)參數(shù)設(shè)置頁簽,設(shè)置切分比例。
單擊畫布上方的保存,保存工作流配置。
step4:調(diào)試運行工作流
右鍵單擊畫布中的類型轉(zhuǎn)換-1組件,在快捷菜單中單擊從此處開始執(zhí)行,調(diào)試運行本工作流。實驗將根據(jù)工作流順序依次運行各節(jié)點。當節(jié)點成功運行完成后,節(jié)點的右上角會出現(xiàn)成功提示。運行成功后,您可以右鍵各節(jié)點,選擇查看數(shù)據(jù),進一步查看當前節(jié)點的輸出數(shù)據(jù)是否正確。
當工作流比較復(fù)雜時,您可以每拖入一個組件配置完成一個節(jié)點后,就單擊保存和運行,進行調(diào)試。如果運行失敗,可右鍵節(jié)點查看日志,進行失敗原因的排查處理。
后續(xù)步驟
完成數(shù)據(jù)預(yù)處理后,需要進行數(shù)據(jù)可視化,詳情請參見數(shù)據(jù)可視化。