

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

# 使用 SparkML 和 Scikit-learn 進行特徵處理
<a name="inference-pipeline-mleap-scikit-learn-containers"></a>

使用 Amazon SageMaker AI 內建演算法或自訂演算法訓練模型之前，您可以使用 Spark 和 scikit-learn 前置處理器轉換資料及設計特徵。

## 使用 Spark ML 進行特徵處理
<a name="feature-processing-spark"></a>

您可以透過 [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) 這個無伺服器 ETL (擷取、轉換、載入) 服務，從您的 SageMaker AI 筆記本執行 Spark ML 任務。您也可以連接到現有的 EMR 叢集，以透過 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) 執行 Spark ML 任務。若要這樣做，您需要一個 AWS Identity and Access Management (IAM) 角色，授予從 SageMaker AI 筆記本進行呼叫的許可 AWS Glue。

**注意**  
若要查看 AWS Glue 支援哪些 Python 和 Spark 版本，請參閱 [AWS Glue 版本備註](/glue/latest/dg/release-notes.html)。

完成特徵工程後，您需要利用 MLeap 將 Spark ML 任務封裝並串列化到 MLeap 容器，以新增至推論管道。您不需要使用外部管理的 Spark 叢集。透過此方法，您可以順暢地從幾列的樣本擴大到數百 TB 的資料。同樣的轉換器適用於訓練和推論，因此，您不再需要重複進行預先處理和特徵工程邏輯，或開發一性解決方案以保留模型。透過推論管道，您不需要維護外部基礎設施，您可以直接從資料輸入進行預測。

當您在 上執行 Spark ML 任務時 AWS Glue，Spark ML 管道會序列化為 [MLeap](https://github.com/combust/mleap) 格式。接著，您可以將工作與 SageMaker AI 推論管道中的 [SparkML 模型服務容器](https://github.com/aws/sagemaker-sparkml-serving-container)搭配使用。*MLeap* 是一種用於機器學習管道的序列化格式和執行引擎。它支援 Spark、Scikit-learn 和 TensorFlow 以訓練管道，並將管道匯出至稱為 MLeap 套件的序列化管道。您可以將這些套件還原序列化到 Spark，以進行批次模式評分，或還原序列化到 MLeap 執行期，以強化即時 API 服務。

如需示範如何使用 Spark ML 進行特徵處理的範例，請參閱[使用 Amazon EMR 中的 Apache Spark 訓練機器學習模型，並在 SageMaker AI ](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/sparkml_serving_emr_mleap_abalone)範例筆記本中部署。

## 使用 Scikit-Learn 進行特徵處理
<a name="feature-processing-with-scikit"></a>

您可以直接在 Amazon SageMaker AI 執行 scikit-learn 工作並封裝成容器。如需建置 scikit-learn 特徵提取模型的 Python 程式碼範例 (此模型接受 [Fisher's Iris flower data set](http://archive.ics.uci.edu/ml/datasets/Iris) 訓練並根據型態測量來預測鳶尾花品種)，請參閱 [IRIS Training and Prediction with Sagemaker Scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris)。