

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

# 使用 scikit-learn 執行資料處理
<a name="use-scikit-learn-processing-container"></a>

您可以搭配 Amazon SageMaker AI 提供之 Docker 映像檔中的 scikit-learn 指令碼，使用 Amazon SageMaker Processing 處理資料並評估模型。以下提供如何使用 scikit-learn 執行 Amazon SageMaker Processing 任務的範例。

如需示範如何透過由 SageMaker AI 提供和維護之 Docker 映像檔執行 scikit-learn 指令碼的範例筆記本，以預先處理資料和評估模型，請參閱 [scikit-learn Processing](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation)。若要使用此筆記本，您需要安裝的適用於 Processing 的 SageMaker AI Python SDK。

此筆記本會使用 SageMaker Python SDK 的 `SKLearnProcessor` 類別來執行處理任務，以執行您提供的 scikit-learn 指令碼。該指令碼會預先處理資料、使用 SageMaker 訓練任務訓練模型，然後執行處理任務以評估訓練模型。處理任務會估計模型在生產過程中的執行方式。

若要深入了解將 SageMaker Python SDK 與 Processing 容器搭配使用，請參閱 [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/)。如需可用於處理任務之預先建置 Docker 映像檔的完整清單，請參閱 [Docker 登錄檔路徑和](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths)範例程式碼。

下列程式碼範例示範筆記本如何使用由 SageMaker AI 提供和維護之 Docker 映像檔 (而非您自己的 Docker 映像檔)，以使用 `SKLearnProcessor` 執行您自己的 scikit-learn 指令碼。

```
from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput

sklearn_processor = SKLearnProcessor(framework_version='0.20.0',
                                     role=role,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)

sklearn_processor.run(code='preprocessing.py',
                      inputs=[ProcessingInput(
                        source='s3://path/to/my/input-data.csv',
                        destination='/opt/ml/processing/input')],
                      outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'),
                               ProcessingOutput(source='/opt/ml/processing/output/validation'),
                               ProcessingOutput(source='/opt/ml/processing/output/test')]
                     )
```

若要在 Amazon SageMaker Processing 上使用 Scikit-Learn 並行處理資料，您可以透過在 `ProcessingInput` 內設定 `s3_data_distribution_type='ShardedByS3Key'`，讓每個執行個體接收大約相同數量的輸入物件，依 S3 金鑰將輸入物件分成碎片。