

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 準備用於模型建置的資料
<a name="canvas-prepare-data"></a>

**注意**  
您現在可以使用 Data Wrangler，在 SageMaker Canvas 中執行進階資料準備，Data Wrangler 為您提供自然語言介面和超過 300 個內建轉換。如需詳細資訊，請參閱[資料準備](canvas-data-prep.md)。

您的機器學習資料集可能需要資料準備才能建立模型。由於各種問題 (可能包括缺少值或極端值)，您可能希望清理資料，並執行特徵工程以提高模型的準確性。Amazon SageMaker Canvas 提供機器學習 (ML) 資料轉換，您可以使用這些清理、轉換和準備資料以建立模型。您可以在資料集上使用這些轉換，而不需要任何程式碼。SageMaker Canvas 會將您使用的轉換新增至**模型配方**，這是在建置模型之前對資料進行的資料準備記錄。您使用的任何資料轉換只會修改用於模型建置的輸入資料，而不會修改原始資料來源。

資料集的預覽會顯示資料集的前 100 列。如果資料集的列數超過 20,000 個，Canvas 會隨機取樣 20,000 列的樣本，並預覽該樣本中的前 100 列。您只能搜尋和指定預覽資料列中的數值，而篩選功能只會篩選預覽的資料列，而不非整個資料集。

SageMaker Canvas 中提供了以下轉換，以便您準備建置的資料。

**注意**  
您只能針對以表格式資料集建立的模型使用進階轉換。也會排除多類別文字預測模型。

## 卸除資料欄
<a name="canvas-prepare-data-drop"></a>

您可以將欄放置在 SageMaker Canvas 應用程式的**建置**索引標籤中，從模型建置中排除該欄。取消選取要放置的資料欄柱，建置模型時不會包含該資料欄。

**注意**  
如果您放置資料欄，然後使用模型進行[批次預測](canvas-make-predictions.md)，SageMaker Canvas 會將放置的資料欄新增回輸出資料集，可供您下載。但是，SageMaker Canvas 不會將放置除的資料欄新增回時間序列模型中。

## 篩選資料列
<a name="canvas-prepare-data-filter"></a>

篩選功能會根據您指定的條件篩選預覽的資料列 (資料集的前 100 個資料列)。篩選列可建立資料的暫時預覽，不會影響模型建置。您可以篩選以預覽缺少值、包含極端值或符合所選欄中的自訂條件的列。

### 依缺少值篩選資料列
<a name="canvas-prepare-data-filter-missing"></a>

缺少值是機器學習資料集中常見的情況。如果某些欄中有 Null 或空值的資料列，您可能會想要篩選並預覽這些資料列。

若要從預覽資料中篩選缺少值，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**依資料列篩選** (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 選擇要確認缺少值的**資料欄**。

1. 針對**作業**，選擇**遺失**。

SageMaker Canvas 篩選器適用於在您選取的**資料欄**中包含缺少值的資料列，並提供篩選列的預覽。

![\[SageMaker Canvas 應用程式中缺少值作業的篩選器螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-filter-missing.png)


### 依極端值篩選資料列
<a name="canvas-prepare-data-filter-outliers"></a>

極端值或資料分佈和範圍中的罕見值可能會對模型準確性產生負面影響，並導致更長的建置時間。SageMaker Canvas 可讓您偵測和篩選數值欄中包含極端值的資料列。您可以選擇使用標準偏差或自訂範圍來定義極端值。

若要篩選資料中的極端值，請執行以下操作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**依資料列篩選** (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 選擇您要檢查極端值的**資料欄**。

1. 針對**作業**，選擇**遺失**。

1. 將**極端值範圍**設定為**標準偏差**或**自訂範圍**。

1. 如果您選擇**標準偏差**，請指定從 1 - 3 開始的 **SD** (標準偏差) 值。如果您選擇**自訂範圍**，請選取**百分位數**或**數字**，然後指定**下限**和**上限**。

**標準偏差**選項會使用平均值和標準偏差來偵測並篩選數值欄中的極端值。您也可以指定標準偏差的數值，其值必須與平均值不同，才能被視為極端值。例如，如果您指定 `3` 為 **SD**，則值必須與平均值的標準偏差必須超過 3，才能被視為極端值。

**自訂範圍**選項會使用最小值和最大值偵測並篩選數值欄中的極端值。如果您知道可分隔極端值的閾值，請使用此方法。您可以將範圍的**類型**設定為**百分位數**或**數字**。如果您選擇**百分位數**，則 **下限**與**上限**值應為您要允許的百分位數範圍 (0-100) 的最小值和最大值。如果您選擇**數字**，則**下限**和**上限**值應為您要在資料中篩選的最小和最大數值。

![\[SageMaker Canvas 應用程式中依據極端值作業篩選的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-filter-outlier.png)


### 按自訂值篩選資料列
<a name="canvas-prepare-data-filter-custom"></a>

您可以篩選具有符合自訂條件數值的資料列。例如，您可能希望在刪除之前預覽價格值大於 100 的資料列。您可以使用此功能，篩選超出所設定閾值的列，並預覽所篩選的資料。

若要使用自訂篩選器功能，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**依資料列篩選** (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 選擇您要檢查的**資料欄**。

1. 選取您要使用的**作業**類型，然後指定選取條件的數值。

針對**作業**，您可以選擇以下其中一個選項。請注意，可用的作業取決於您選擇的資料欄的資料類型。例如，您無法為包含文字值的資料欄建立 `is greater than` 作業。


| 作業 | 支援的資料類型 | 支援的功能類型 | 函式 | 
| --- | --- | --- | --- | 
|  等於  |  數值、文字  | 二進位、分類 |  篩選**資料欄**中數值等於您指定數值的資料列。  | 
|  不等於  |  數值、文字  | 二進位、分類 |  篩選**資料欄**中數值不等於您指定數值的資料列。  | 
|  少於  |  數值  | N/A |  篩選**資料欄**中數值少於您指定數值的資料列。  | 
|  小於或等於  |  數值  | N/A |  篩選**資料欄**中數值小於或等於您指定數值的資料列。  | 
|  大於  |  數值  | N/A |  篩選**資料欄**中數值大於您指定數值的資料列。  | 
|  大於或等於  |  數值  | N/A |  篩選**資料欄**中數值大於或等於您指定數值的資料列。  | 
|  介於  |  數值  | N/A |  篩選**資料欄**中數值介於您指定的兩個數值之間的資料列。  | 
|  Contains  |  文字  | 分類 |  篩選**資料欄**中數值包含您指定數值的資料列。  | 
|  開頭為  |  文字  | 分類 |  篩選**資料欄**中數值開始於您指定數值的資料列。  | 
|  Ends with  |  分類  | 分類 |  篩選**資料欄**中數值結尾為您指定數值的資料列。  | 

設定篩選作業後，SageMaker Canvas 會更新資料集的預覽，以向您顯示篩選的資料。

![\[SageMaker Canvas 應用程式中自訂值作業的篩選器螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-filter-custom.png)


## 函式和運算子
<a name="canvas-prepare-data-custom-formula"></a>

您可以使用數學函式和運算子來探索和發佈資料。您可以使用 SageMaker Canvas 支援的函式，或使用現有資料建立自己的公式，並使用公式的結果建立新資料欄。例如，您可以新增兩欄的對應值，並將結果儲存至新資料欄。

您可以巢狀化陳述式來建立更複雜的函式。以下是一些您可能使用的巢狀化函式範例。
+ 若要計算 BMI，您可以使用 `weight / (height ^ 2)` 函式。
+ 若要分類年齡，您可以使用 `Case(age < 18, 'child', age < 65, 'adult', 'senior')` 函式。

您可以在建置模型之前，在資料準備階段指定函式。若要使用函式，請執行下列動作。
+ 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**檢視全部**，然後選擇**自訂公式**以開啟**自訂公式**面板。
+ 在**自訂公式**面板中，您可以選擇要新增至**模型配方**的**公式**。每個公式都會套用至您指定的欄中的所有值。針對接受兩個或多個資料欄作為引數的公式，請使用具有相符資料類型的資料欄；否則您會在新資料欄中收到錯誤或 `null` 值。
+ 指定**公式**後，請在**新資料欄名稱**中新增資料欄名稱。SageMaker Canvas 會將此名稱用於所建立的新資料欄。
+ (選用) 選擇**預覽**以預覽轉換。
+ 若要將函式新增至**模型配方**，請選擇**新增**。

SageMaker Canvas 會使用您在**新資料欄名稱**中指定的名稱，將函式的結果儲存至新資料欄。您可以從**模型配方**面板中檢視或移除函式。

SageMaker Canvas 支援下列運算子的函式。您可以使用文字格式或內嵌格式來指定函式。


| 運算子 | Description | 支援的資料類型 | 文字格式 | 內嵌格式 | 
| --- | --- | --- | --- | --- | 
|  加  |  傳回值的總和  |  數值  | Add(sales1, sales2) | sales1 \$1 sales2 | 
|  減  |  傳回值之間的差異  |  數值  | Subtract(sales1, sales2) | sales1 ‐ sales2 | 
|  乘  |  傳回值的產品  |  數值  | Multiply(sales1, sales2) | sales1 \$1 sales2 | 
|  除  |  傳回值的商數  |  數值  | Divide(sales1, sales2) | sales1 / sales2 | 
|  MOD  |  傳回模數運算子的結果 (除以兩個值後的餘數)  |  數值  | Mod(sales1, sales2) | sales1 % sales2 | 
|  Abs  | 傳回數值的絕對值。 |  數值  | Abs(sales1) | N/A | 
|  負  | 傳回值的負數 |  數值  | Negate(c1) | -c1 | 
|  EXP  |  傳回 e (尤拉數) 的該值次方  |  數值  | Exp(sales1) | N/A | 
|  Log  |  傳回值的對數 (以 10 為底)  |  數值  | Log(sales1) | N/A | 
|  Ln  |  傳回值的自然對數 (以 e 為底)  |  數值  | Ln(sales1) | N/A | 
|  Pow  |  傳回值的冪  |  數值  | Pow(sales1, 2) | sales1 ^ 2 | 
|  If  |  根據您指定的條件傳回真或偽標籤  |  布林值、數值、文字  | If(sales1>7000, 'truelabel, 'falselabel') | N/A | 
|  或  |  傳回指定值或條件之一是否為真的布林值  |  Boolean  | Or(fullprice, discount) | fullprice \$1\$1 discount | 
|  及  |  傳回兩個指定值或條件之一是否為真的布林值  |  Boolean  | And(sales1,sales2) | sales1 && sales2 | 
|  Not  |  傳回一個與指定值或條件相反的布林值  |  Boolean  | Not(sales1) | \$1sales1 | 
|  案例  |  傳回基於條件描述的布林值 (若 cond1 為真則傳回 c1，若 cond2 為真則傳回 c2，否則傳回 c3)  |  布林值、數值、文字  | Case(cond1, c1, cond2, c2, c3) | N/A | 
|  等於  |  傳回兩個值是否相等的布林值  |  布林值、數值、文字  | N/A | C1 = C2C1 == C2 | 
|  不等於  |  傳回兩個值不相等的布林值  |  布林值、數值、文字  | N/A | c1 \$1= c2 | 
|  Less than  |  傳回 c1 是否小於 c2 的布林值  |  布林值、數值、文字  | N/A | c1 < c2 | 
|  Greater than  |  傳回 c1 是否大於 c2 的布林值  |  布林值、數值、文字  | N/A | c1 > c2 | 
|  Less than or equal  |  傳回 c1 是否小於或等於 c2 的布林值  |  布林值、數值、文字  | N/A | c1 <= c2 | 
|  Greater than or equal  |  傳回 c1 是否大於或等於 c2 的布林值  |  布林值、數值、文字  | N/A | c1 >= c2 | 

SageMaker Canvas 也支援彙總運算子，這些運算子可以執行諸如計算所有值的總和或在資料欄中尋找最小值之類的作業。您可以將彙總運算子與函式中的標準運算子結合使用。例如要計算與平均值的差異，您可以使用該 `Abs(height – avg(height))` 函式。SageMaker Canvas 支援下列彙總運算子。


| 彙總運算子 | Description | 格式 | 範例 | 
| --- | --- | --- | --- | 
|  sum  |  傳回資料欄中所有值的總和  | sum | sum(c1) | 
|  minimum  |  傳回資料欄的最小值  | min | min(c2) | 
|  maximum  |  傳回資料欄的最大值  | max | max(c3) | 
|  average  |  傳回資料欄的平均值  | avg | avg(c4) | 
|  std  | 傳回資料欄的範例標準偏差 | std | std(c1) | 
|  stddev  | 傳回資料欄值的標準偏差 | stddev | stddev(c1) | 
|  variance  | 傳回資料欄中的無偏差變異數 | variance | variance(c1) | 
|  approx\$1count\$1distinct  | 傳回資料欄中不同項目的近似數 | approx\$1count\$1distinct | approx\$1count\$1distinct(c1) | 
|  count  | 傳回資料欄中項目的數字 | count | count(c1) | 
|  first  |  傳回資料欄的第一個值  | first | first(c1) | 
|  last  |  傳回資料欄的最後一個值  | last | last(c1) | 
|  stddev\$1pop  | 傳回資料欄的人口標準偏差 | stddev\$1pop | stddev\$1pop(c1) | 
|  variance\$1pop  |  傳回資料欄中值的人口變異數  | variance\$1pop | variance\$1pop(c1) | 

## 管理資料列
<a name="canvas-prepare-data-manage"></a>

透過管理資料列轉換，您可以執行排序、隨機顯示，以及從資料集中移除資料列。

### 排序列
<a name="canvas-prepare-data-manage-sort"></a>

若要依指定資料欄排序資料集中的資料列，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**，然後選擇**排序資料列**。

1. 在**對資料欄進行排序**中，選擇要當作排序依據的資料欄。

1. 針對**排序順序**，請選取**遞增**或**遞減**。

1. 選擇**新增**，將轉換新增至**模型配方**。

### 隨機顯示資料列
<a name="canvas-prepare-data-manage-shuffle"></a>

若要隨機顯示資料集中的資料列，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**，然後選擇**隨機顯示資料列**。

1. 選擇**新增**，將轉換新增至**模型配方**。

### 捨棄重複的資料列
<a name="canvas-prepare-data-manage-drop-duplicate"></a>

若要移除資料集中重複的資料列，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**，然後選擇**捨棄重複的資料列**。

1. 選擇**新增**，將轉換新增至**模型配方**。

### 按缺少值刪除資料行
<a name="canvas-prepare-data-remove-missing"></a>

缺少值是機器學習資料集中常見的情況，且會影響模型準確度。如果您想要捨棄特定資料欄中含有 Null 或空值的資料列，請使用此轉換。

若要移除指定欄中包含缺少值的列，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**。

1. 選擇**按缺少值刪除資料行**。

1. 選擇**新增**，將轉換新增至**模型配方**。

SageMaker Canvas 會在您選取的**資料欄**中刪除包含缺少值的列。從資料集中移除資料列之後，SageMaker Canvas 會在**模型配方**區段中新增轉換。如果您從**模型配方**區段移除轉換，則資料列會傳回資料集。

![\[SageMaker Canvas 應用程式中缺少值作業移除列的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-remove-missing.png)


### 按極端值刪除資料行
<a name="canvas-prepare-data-remove-outliers"></a>

極端值或資料分佈和範圍中的罕見值可能會對模型準確性產生負面影響，並導致更長的建置時間。使用 SageMaker Canvas 您可以偵測和移除數值欄中包含極端值的資料列。您可以選擇使用標準偏差或自訂範圍來定義極端值。

若要移除資料中的極端值，請執行以下操作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**。

1. 選擇**按極端值刪除資料列**。

1. 選擇您要檢查極端值的**資料欄**。

1. 將**運算子**設定為**標準偏差**、**自訂數值範圍**或**自訂分位數範圍**。

1. 如果您選擇 **Standard deviation** (標準偏差)，請指定從 1 - 3 開始的 **Standard deviations** (標準偏差) 值。如果您選擇 **Custom numeric range** (自訂數值範圍) 或 **Custom quantile range** (自訂分位數範圍)，請指定 **Min** (下限) 與 **Max** (上限) (數值範圍的數字，或若為分位數範圍，則指定介於 0 - 100% 之間的百分位數)。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

**Standard deviation** (標準偏差) 選項會使用平均值和標準偏差來偵測並移除數值欄中的極端值。您也可以指定標準偏差的數值，其值必須與平均值不同，才能被視為極端值。例如，如果您指定 `3` 為**標準偏差**，則該值必須與平均值的標準偏差必須超過 3，才能被視為極端值。

**Custom numeric range** (自訂數值範圍) 和 **Custom quantile range** (自訂分位數範圍) 選項會使用最小值和最大值偵測並移除數值欄中的極端值。如果您知道可分隔極端值的閾值，請使用此方法。如果您選擇數值範圍，則** Min** (下限) 和 **Max** (上限) 值應為您要在資料中允許的最小和最大數值。如果您選擇分位數範圍，則 **Min** (下限) 與 **Max** (上限) 值應為您要允許的百分位數範圍 (0-100) 的最小值和最大值。

從資料集中移除資料列之後，SageMaker Canvas 會在 **Model recipe** (模型配方) 區段中新增轉換。如果您從 **Model recipe** (模型配方) 區段移除轉換，則資料列會傳回資料集。

![\[SageMaker Canvas 應用程式中依據極端值作業移除資料列的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-remove-outlier.png)


### 依自訂值刪除資料列
<a name="canvas-prepare-data-remove-custom"></a>

您可以移除 具有符合自訂條件數值的資料列。例如建置模型時，您可能想要排除價格值大於 100 的所有列。透過此轉換，您可以建立一個規則，以移除超出所設定閾值的所有資料列。

若要使用自訂移除轉換，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料列**。

1. 選擇 **Drop rows by formula** (按公式捨棄資料列)。

1. 選擇您要檢查的 **Column** (資料欄)。

1. 選取您要使用的 **Operation** (作業) 類型，然後指定選取條件的數值。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

針對 **Operation** (作業)，您可以選擇以下其中一個選項。請注意，可用的作業取決於您選擇的資料欄的資料類型。例如，您無法為包含文字值的資料欄建立 `is greater than` 作業。


| 作業 | 支援的資料類型 | 支援的功能類型 | 函式 | 
| --- | --- | --- | --- | 
|  等於  |  數值、文字  |  二進位、分類  |  移除 **Column** (資料欄) 中數值等於您指定數值的資料列。  | 
|  不等於  |  數值、文字  |  二進位、分類  |  移除 **Column** (資料欄) 中數值不等於您指定數值的資料列。  | 
|  少於  |  數值  | N/A |  移除 **Column** (資料欄) 中數值少於您指定數值的資料列。  | 
|  小於或等於  |  數值  | N/A |  移除 **Column** (資料欄) 中數值小於或等於您指定數值的資料列。  | 
|  大於  |  數值  | N/A |  移除 **Column** (資料欄) 中數值大於您指定數值的資料列。  | 
|  大於或等於  | 數值 | N/A |  移除 **Column** (資料欄) 中數值大於或等於您指定數值的資料列。  | 
|  介於  | 數值 | N/A |  刪除 **Column** (資料欄) 中數值介於您指定的兩個數值之間的資料列。  | 
|  Contains  |  文字  | 分類 |  移除 **Column** (資料欄) 中數值包含您指定數值的資料列。  | 
|  開頭為  |  文字  | 分類 |  移除 **Column** (資料欄) 中數值開始於您指定數值的資料列。  | 
|  Ends with  |  文字  | 分類 |  移除 **Column** (資料欄) 中數值結尾為您指定數值的資料列。  | 

從資料集中移除資料列之後，SageMaker Canvas 會在 **Model recipe** (模型配方) 區段中新增轉換。如果您從 **Model recipe** (模型配方) 區段移除轉換，則資料列會傳回資料集。

![\[SageMaker Canvas 應用程式中自訂值作業移除列的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-remove-custom.png)


## 重新命名欄
<a name="canvas-prepare-data-rename"></a>

透過重新命名資料欄轉換，您可以重新命名資料中的欄。當您重新命名資料欄時，SageMaker Canvas 會變更模型輸入中的欄位名稱。

您可以在 SageMaker Canvas 應用程式的**建置**索引標籤中按兩下資料欄名稱，然後輸入新名稱，即可重新命名資料集中的資料欄。按 **Enter Key** (輸入索引鍵) 可提交變更，按一下輸入外的任意位置可取消變更。您也可以按一下位於清單檢視中列末端或在網格檢視中標題儲存格結尾處的的 **More options** (更多選項) 圖示 (![\[Vertical ellipsis icon representing a menu or more options.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/more-options-icon.png))，然後選擇 **Rename** (重新命名) 來重新命名資料欄。

您的資料欄名稱不得超過 32 個字元，或有雙底線 (\$1\$1)，也無法將資料欄重新命名為與另一資料欄相同的名稱。您也無法重新命名捨棄的資料欄。

下列螢幕擷取畫面顯示如何按兩下欄位名稱來重新命名資料欄。

![\[在 SageMaker Canvas 應用程式按兩下重新命名資料欄方法的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-rename-column.png)


當您重新命名資料欄時，SageMaker Canvas 會在 **Model recipe** (模型配方) 區段中新增轉換。如果您從 **Model recipe** (模型配方) 區段中移除轉換，則該欄會還原為其原始名稱。

## 管理欄
<a name="canvas-prepare-data-manage-cols"></a>

透過下列轉換，您可以變更資料欄的資料類型，並取代特定資料欄的遺失值或極端值。SageMaker Canvas 會在建置模型時使用更新的資料類型或值，但不會變更原始資料集。請注意，如果您使用 [卸除資料欄](#canvas-prepare-data-drop) 轉換從資料集中捨棄資料欄，就無法取代該資料欄中的值。

### 取代遺失值
<a name="canvas-prepare-data-replace-missing"></a>

缺少值是機器學習資料集中常見的情況，且會影響模型準確度。您可以選擇捨棄具有缺少值的列，但如果您選擇取代遺失值，則模型會更準確。透過此轉換，您可以將數值欄中遺失值取代為欄中資料的平均值或中間值，或者可以指定自訂值取代遺失值。針對非數字欄，您可以使用欄的模式 (最常用的值) 或自訂值來取代遺失值。

如果您想要取代特定資料欄中含有的 Null 或空值，請使用此轉換。若要在指定欄中取代遺失值，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇 **Manage columns** (管理資料欄)。

1. 選擇 **Replace missing values** (取代遺失值)。

1. 選擇要取代遺失值的 **Column** (資料欄)。

1. 將 **Mode** (模式) 設定為 **Manual** (手動)，以您指定的值取代遺失值。使用 **Automatic (default)** (自動(預設)) 設定，SageMaker Canvas 會以最適合您資料的推算值取代遺失值。除非您指定 **Manual** (手動) 模式，否則每個模型建置都會自動完成此推算方法。

1. 設定**取代為**值：
   + 如果您的欄是數值，請選取 **Mean **(平均值)、**Median** (中間值) 或 **Custom** (自訂)。**Mean** (平均值) 會以欄的平均值取代遺失值，而 **Median** (中間值) 則以欄的中間值取代遺失值。如果您選擇 **Custom** (自訂)，則必須指定要用來取代遺失值的自訂值。
   + 如果您的欄是數值，請選取 **Mode** (模式) 或 **Custom** (自訂)。**Mode** (模式) 會以資料欄的模式或最常用的值取代遺失值。針對 **Custom** (自訂)，則請指定要用來取代遺失值的自訂值。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

從資料集中取代缺少值之後，SageMaker Canvas 會在 **Model recipe** (模型配方) 區段中新增轉換。如果您從 **Model recipe** (模型配方) 區段移除轉換，則缺少值會傳回資料集。

![\[SageMaker Canvas 應用程式中取代遺失值作業的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-replace-missing.png)


### 取代極端值
<a name="canvas-prepare-data-replace-outliers"></a>

極端值或資料分佈和範圍中的罕見值可能會對模型準確性產生負面影響，並導致更長的建置時間。SageMaker Canvas 可讓您偵測數值欄中的極端值，並以資料中可接受範圍內的值取代極端值。您可以選擇使用標準偏差或自訂範圍來定義極端值，也可以使用接受範圍內的最小值和最大值來取代極端值。

若要取代資料中的極端值，請執行以下操作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇**管理資料欄**。

1. 選擇 **Replace outlier values** (取代極端值)。

1. 選擇要取代極端值的 **Column** (資料欄)。

1. 針對 **Define outliers** (定義極端值)，請選擇 **Standard deviation** (標準偏差)、**Custom numeric range** (自訂數值範圍) 或 **Custom quantile range** (自訂分位數範圍)。

1. 如果您選擇 **Standard deviation** (標準偏差)，請指定從 1 - 3 開始的 **Standard deviations** (標準偏差) 值。如果您選擇 **Custom numeric range** (自訂數值範圍) 或 **Custom quantile range** (自訂分位數範圍)，請指定 **Min** (下限) 與 **Max** (上限) (數值範圍的數字，或若為分位數範圍，則指定介於 0 - 100% 之間的百分位數)。

1. 針對 **Replace with** (取代為)，選取 **Min/max range** (最小/最大範圍)。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

**Standard deviation** (標準偏差) 選項會使用平均值和標準偏差來偵測數值欄中的極端值。您也可以指定標準偏差的數值，其值必須與平均值不同，才能被視為極端值。例如，如果您指定 3 為**標準偏差**，則值必須與平均值的標準偏差必須超過 3，才能被視為極端值。SageMaker Canvas 會以接受的範圍內的最小值或最大值取代極端值。例如，如果您將標準偏差設定為僅包含 200 - 300 之間的值，則 SageMaker Canvas 會將 198 的值變更為 200 (最小值)。

**Custom numeric range** (自訂數值範圍) 和 **Custom quantile range** (自訂分位數範圍)選項會使用最小值和最大值偵測數值欄中的極端值。如果您知道可分隔極端值的閾值，請使用此方法。如果您選擇數值範圍，則** Min** (下限) 和 **Max** (上限) 值應為您想允許的最小和最大數值。SageMaker Canvas 會將任何超出最小值和最大值的任何值取代為最小值與最大值。例如，如果您的範圍僅允許 1 - 100 之間的值，則 SageMaker Canvas 會將數值 102 變更為 100 (最大值)。如果您選擇分位數範圍，則 **Min** (下限) 與 **Max** (上限) 值應為您要允許的百分位數範圍 (0-100) 的最小值和最大值。

從資料集中取代數值之後，SageMaker Canvas 會在 **Model recipe** (模型配方) 區段中新增轉換。如果您從 **Model recipe** (模型配方) 區段移除轉換，則原始值會傳回資料集。

![\[SageMaker Canvas 應用程式中移除極端值作業的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-replace-outlier.png)


### 變更資料類型
<a name="canvas-prepare-data-change-type"></a>

SageMaker Canvas 可讓您在數值、文字和日期時間之間變更欄的*資料類型*，同時還能顯示該資料類型的關聯*功能類型*。*資料類型*是指資料的格式及其儲存方式，而*特徵類型*則是指機器學習演算法 (例如二進位或分類) 中所使用之資料的特性。這使您可以有彈性地根據功能手動更改資料欄中的資料類型。在建置模型之前，選擇正確的資料類型可確保資料完整性和準確性。建置模型時會使用這些資料類型。

**注意**  
目前不支援變更功能類型 (例如從二進位變更為分類)。

下表列出了所有 Canvas 支援的資料類型。


| 資料類型 | Description | 範例 | 
| --- | --- | --- | 
| 數值 | 數字資料代表數值 | 1、2、31.1、1.2。1.3 | 
| 文字 | 文字資料代表字元序列，如名稱或描述 | A, B, C, D蘋果，香蕉，柳橙1A\$1, 2A\$1, 3A\$1 | 
| 日期時間 | 日期時間資料代表時間戳記格式格式的日期和時間 | 2019-07-01 01:00:00, 2019-07-01 02:00:00, 2019-07-01 03:00:00 | 

下表列出了所有 Canvas 支援的特徵類型。


| 特徵類型 | Description | 範例 | 
| --- | --- | --- | 
| 二進位 | 二進位特徵代表兩個可能的值 | 0, 1, 0, 1, 0 (2 個相異值)真，偽，真 (2 個相異值) | 
| 分類 | 分類特徵代表不同的類別或群組 | 蘋果，香蕉，柳橙，蘋果 (3 個相異值)A，B，C，D，E，A，D，C (5 個相異值) | 

若要修改資料集中資料欄的資料類型，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的建置****索引標籤中，前往 **Column view** (欄位檢視) 或 **Grid view** (網格檢視)，然後針對特定欄選取 **Data type** (資料類型) 下拉式清單。

1. 在 **資料類型** (資料類型) 下拉式清單中，選擇要轉換的目的資料類型。下列螢幕擷取畫面顯示下拉式清單功能表。  
![\[資料欄的資料類型轉換下拉式清單功能表，顯示在建置索引標籤中。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-prepare-data-change.png)

1. 在 **Column** (資料欄)，選擇或驗證您要變更其資料類型的欄。

1. 針對 **New data type** (新資料類型)，選擇或驗證要轉換成的新資料類型。

1. 如果 **New data type** (新資料類型) 為 `Datetime` 或 `Numeric`，請在 **Handle invalid values** (處理無效值)下選擇下列其中一個選項：

   1. **Replace with empty value** (以空白值取代) - 將無效值取代為空值

   1. **Delete rows** (刪除列) - 具有無效值的資料列會從資料集中移除

   1. **Replace with custom value** (以自訂值取代) - 無效值會以您指定的 **Custom Value** (自訂值) 取代。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

您的資料欄資料類型現在應該被更新。

## 準備時間序列資料
<a name="canvas-prepare-data-timeseries"></a>

使用下列功能來準備時間序列資料，以建立時間序列預測模型。

### 重新取樣時間序列資料
<a name="canvas-prepare-data-resample"></a>

透過重新取樣時間序列資料，您可以為時間序列資料集中的觀察建立固定的間隔。這在處理包含不規則間隔觀察值的時間序列資料時特別有用。例如您可以使用重新取樣，將每隔一小時、兩小時和三小時間隔記錄一次觀察值的資料集，轉換為每次觀測之間固定一小時間隔。預測演算法需要定期取樣觀察值。

若要重新取樣時間序列資料，請執行下列動作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤中，選擇 **Time series** (時間序列)。

1. 選擇 **Resample** (重新取樣)。

1. 在 **Timestamp column** (時間戳記欄)，選擇要套用轉換作業的資料欄。您只能選取 **Datetime** (日期時間) 類型的資料欄。

1. 在 **Frequency settings** (頻率設定) 區段中，選擇 **Frequency** (頻率) 和 **Rate** (比率)。**Frequency** (頻率) 是頻率的單位，**Rate** (比率) 是要套用至資料欄的頻率單位的間隔。例如，在 **Frequency value** (頻率值) 選擇 `Calendar Day`，在 **Rate** (比率) 選擇 `1` 會設定每 1 個行事曆日增加的間隔，例如 `2023-03-26 00:00:00`、`2023-03-27 00:00:00`、`2023-03-28 00:00:00`。如需 **Frequency value** (頻率值) 的完整清單，請參閱此程序之後的資料表。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

下表列出重新取樣時間序列資料時可選取的所有 **Frequency** (頻率) 類型。


| Frequency (頻率) | Description | 範例值 (假設比率為 1) | 
| --- | --- | --- | 
|  工作日  |  將日期時間資料欄中的觀察重新採樣為一週的 5 個工作日 (星期一、星期二、星期三、星期四、星期五)  |  2023-03-24 00：00：00 2023-03-27 00：00：00 2023-03-28 00：00：00 2023-03-29 00：00：00 2023-03-30 00：00：00 2023-03-31 00：00：00 2023-04-03 00：00：00  | 
|  行事曆日  |  將日期時間資料欄中的觀察重新採樣為一週的 7 個工作日 (星期一、星期二、星期三、星期四、星期五、星期六、星期日)  |  2023-03-26 00：00：00 2023-03-27 00：00：00 2023-03-28 00：00：00 2023-03-29 00：00：00 2023-03-30 00：00：00 2023-03-31 00：00：00 2023-04-01 00：00：00  | 
|  週  |  將日期時間欄中的觀察重新採樣到每週的第一天  |  2023-03-13 00：00：00 2023-03-20 00：00：00 2023-03-27 00：00：00 2023-04-03 00：00：00  | 
|  月  |  將日期時間欄中的觀察重新採樣到每月的第一天  |  2023-03-01 00：00：00 2023-04-01 00：00：00 2023-05-01 00：00：00 2023-06-01 00：00：00  | 
|  每年季度  |  將日期時間欄中的觀察重新採樣到每季的最後一天  |  2023-03-31 00：00：00 2023-06-30 00：00：00 2023-09-30 00：00：00 2023-12-31 00：00：00  | 
|  年  |  將日期時間欄中的觀察重新採樣到每年的最後一天  |  2022-12-31 0：00：00 2023-12-31 00：00：00 2024-12-31 00：00：00  | 
|  小時  |  將日期時間欄中的觀察重新採樣到每天的每小時  |  2023-03-24 00：00：00 2023-03-24 01：00：00 2023-03-24 02：00：00 2023-03-24 03：00：00  | 
|  分鐘  |  將日期時間欄中的觀察重新採樣到每小時的每分鐘  |  2023-03-24 00：00：00 2023-03-24 00：01：00 2023-03-24 00：02：00 2023-03-24 00：03：00  | 
|  秒  |  將日期時間欄中的觀察重新採樣到每分鐘的每秒  |  2023-03-24 00：00：00 2023-03-24 00：00：01 2023-03-24 00：00：02 2023-03-24 00：00：03  | 

套用重新取樣轉換時，您可以使用**進階**選項，指定如何修改資料集中其餘資料欄 (時間戳記欄除外) 的結果值。這可以透過指定重新取樣方法來實現，該方法可以是數值和非數值欄的縮減取樣或向上取樣。

*縮減取樣*會增加資料集中觀察值取樣的間隔時間。例如，如果您縮減取樣每小時或每兩個小時取樣一次的觀察值，則資料集中的每個觀察值會每兩小時取樣一次。每小時觀察值的其他資料欄的值使用組合方法，被彙總為單一值。下表顯示使用均值作為組合方法以縮減取樣時間序列資料的範例。資料會從每兩個小時縮減取樣到每小時一次。

下表顯示縮減取樣前一天的每小時溫度讀數。


| 時間戳記 | 溫度 (攝氏) | 
| --- | --- | 
| 12:00 PM | 30 | 
| 1:00 am | 32 | 
| 2:00 am | 35 | 
| 3:00 am | 32 | 
| 4:00 am | 30 | 

下表顯示縮減取樣至每兩小時的溫度讀數。


| 時間戳記 | 溫度 (攝氏) | 
| --- | --- | 
| 12:00 PM | 30 | 
| 2:00 am | 33.5 | 
| 2:00 am | 35 | 
| 4:00 am | 32.5 | 

若要縮減時間序列資料的取樣，請執行下列動作：

1. 展開 **Resample** (重新取樣) 轉換下的 **Advanced** (進階) 區段。

1. 選擇 **Non-numeric combination** (非數值組合)，以指定非數值資料欄的組合方式。如需組合方法的完整清單，請參閱下列資料表。

1. 選擇 **Numeric combination** (數值組合)，以指定數值資料欄的組合方式。如需組合方法的完整清單，請參閱下列資料表。

如果未指定組合方法，則 **Non-numeric combination** (非數字組合) 為 `Most Common` 和 **Numeric combination** (數字組合) 為 `Mean`。下表列出了數值和非數值組合的方法清單。


| 縮減取樣方法 | 組合方法 | Description | 
| --- | --- | --- | 
| 非數字組合 | 最常見 | 依最常見的數值彙總非數值資料欄中的值 | 
| 非數字組合 | Last | 依資料欄最後一個值彙總非數值資料欄中的值 | 
| 非數字組合 | First | 依資料欄第一個值彙總非數值資料欄中的值 | 
| 數字組合 | Mean | 透過取資料欄中所有值的平均值，來彙總數值列中的值 | 
| 數字組合 | Median | 透過取資料欄中所有值的中間值，來彙總數值列中的值 | 
| 數字組合 | 最少 | 透過取資料欄中所有值的最小值，來彙總數值列中的值 | 
| 數字組合 | 最多 | 透過取資料欄中所有值的最大值，來彙總數值列中的值 | 
| 數字組合 | 總和 | 將資料欄所有值相加，彙總數值資料欄中的值 | 
| 數字組合 | 分位數 | 透過取資料欄中所有值的分位數值，來彙總數值列中的值 | 

*擴大取樣*會縮減資料集中觀察取樣的間隔時間。例如，如果您將每兩個小時採樣一次的觀測值擴大取樣為每一小時取樣一次，則每小時觀察的其他資料欄的值是從每兩小時獲得的值內插入的。

若要向上取樣時間序列資料，請執行下列動作：

1. 展開 **Resample** (重新取樣) 轉換下的 **Advanced** (進階) 區段。

1. 選擇 **Non-numeric estimation** (非數值估算)，以指定非數值欄的估算方法。如需方法的完整清單，請參閱此程序之後的資料表。

1. 選擇 **Numeric estimation** (數值估算)，以指定數值欄的估算方法。如需方法的完整清單，請參閱下列資料表。

1. (選用) 選擇 **ID Column** (ID 欄) 以指定具有時間序列觀察 ID 的資料欄。如果您的資料集有兩個時間序列，請指定此選項。如果您的資料欄僅代表一個時間序列，請不要指定此欄位的值。例如，您可以擁有包含資料欄 `id` 和 `purchase` 的資料集。該 `id` 資料欄列具有以下值：`[1, 2, 2, 1]`。該 `purchase` 資料欄列具有以下值 `[$2, $3, $4, $1]`。因此該資料集有兩個時間序列 - 一個時間序列是：`1: [$2, $1]`，另一個時間序列為 `2: [$3, $4]`。

如果未指定估算方法，則預設值 `Forward Fill`適用於 **Non-numeric estimation** (非數值估算) 和 `Linear`適用於 **Numeric estimation** (數值估算)。下表會列出用於估算的方法。


| 向上取樣方法 | 估算方法 | Description | 
| --- | --- | --- | 
| 非數值估算 | 向前填充 | 透過在欄中的所有值之後取連續值，在非數字資料欄中插入數值 | 
| 非數值估算 | 向後填充 | 透過在欄中的所有值之前取連續值，在非數字資料欄中插入數值 | 
| 非數值估算 | 保持缺少 | 藉由顯示空值，在非數值資料欄中插入數值 | 
| 數值估算 | Linear, Time, Index, Zero, S-Linear, Nearest, Quadratic, Cubic, Barycentric, Polynomial, Krogh, Piecewise Polynomial, Spline, P-chip, Akima, Cubic Spline, From Derivatives | 使用指定的插補器在數值欄中插入值。如需有關插補方法的資訊，請參閱 pandas 文件中的 [pandas.DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html)。 | 

下列螢幕擷取畫面顯示 **Advanced** (進階) 設定，其中已填寫縮減取樣和向上取樣欄位。

![\[Canvas 應用程式，其時間序列重新取樣側邊面板顯示進階選項。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-prepare-data-resampling.png)


### 使用日期時間擷取
<a name="canvas-prepare-data-datetime"></a>

透過日期時間擷取轉換，您可以將日期時間資料欄中的值擷取至不同的資料欄。例如，如果您有一個包含購買日期的欄，則可以將月份值擷取至單獨的欄，並在建置模型時使用新欄。您也可以透過單一轉換來擷取多個值至不同的資料欄。

您的日期時間欄必須使用支援的時間戳記格式。如需 SageMaker Canvas 支援的格式清單，請參閱[Amazon SageMaker Canvas 中的時間序列預測](canvas-time-series.md)。如果您的資料集未使用其中一種支援的格式，請在建立模型之前更新資料集以使用支援的時間戳記格式，並將其重新匯入 Amazon SageMaker Canvas。

要執行日期時間擷取，請執行以下操作。

1. 在 SageMaker Canvas 應用程式的**建置**索引標籤的在轉換列上選擇**檢視全部**。

1. 選擇 **Extract features** (擷取功能)。

1. 選擇要從中擷取值的 **Timestamp column** (時間戳記欄)。

1. 針對 **Values** (值)，選取一個或多個要從欄擷取的值。您可以從時間戳記欄擷取的值包括 **Year** (年)、**Month** (月)、**Day** (日)、**Hour** (小時)、**Week of year** (年份中的週數)、**Day of year** (該年的第幾日) 以及 **Quarter** (季)。

1. (選用) 選擇 **Preview** (預覽) 以預覽轉換結果。

1. 選擇 **Add** (新增)，將轉換新增至 **Model recipe** (模型配方)。

SageMaker Canvas 會在資料集中為您擷取的每個值建立一個新資料欄。除了**年**值之外，SageMaker Canvas 對擷取的值使用以 0 為基礎的編碼。例如，如果您擷取 **Month** (月) 值，則一月會擷取為 0，而二月則為 1。

![\[SageMaker Canvas 應用程式中日期時間擷取方塊的螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/canvas/canvas-datetime-extract.png)


您可以在 **Model recipe** (模型配方) 區段中看到列出的轉換。如果您從 **Model recipe** (模型配方) 區段移除轉換，則新資料欄會從資料集中移除。