簡體   English   中英

如何從 AWS Sagemaker 中的適合方法訪問集群標簽

[英]How to access cluster labels from a fit method in AWS Sagemaker

背景資料:

AWS Sagemaker 提供了使用外部 Sklearn 集群方法(如 DBSCAN)以及內部集群方法(如 kmeans)進行擬合和部署/預測的可能性。 默認情況下,在將方法部署為預測器 object 后,您可以訪問集群標簽:

例子:

kmeans_customers_3 = KMeans(role=role,
                            instance_count=1,
                            instance_type='ml.c4.xlarge',
                            output_path=output_path_cluster, # specified, above
                            k=3, 
                            epochs=20,
                            sagemaker_session=sagemaker_session)
    
kmeans_customers_3.fit(some_data)
        
kmeans_predict_3 = kmeans_customers_3.deploy(
            initial_instance_count=1,
            instance_type="ml.t2.medium"
)
        
cluster_info=kmeans_predict_3.predict(aws_conform_data_in_record_set)
        
cluster_labels = [cluster.label['closest_cluster'].float32_tensor.values[0] for cluster in cluster_info]

問題

當使用 sklearn 的外部聚類方法時,這些方法大多沒有predict() function。例如 Agglomerative Clustering 或 DBSCAN 只有fit()fit_predict()方法,這與 AWS 部署不兼容,只有具有預測的方法方法,如 Kmeans 或親和力聚類,與 AWS 配合良好( https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html

問題

我如何從 AWS 訪問一個合適的聚類 model,以便我可以在合適訪問model.class_labels attributes (希望不僅使用具有預測方法的聚類方法)? 我現在如何下載 model.tar.gz 但是,我有點不知道如何處理它,因為打開它沒有幫助。

也可以為這種方法編寫自己的預測 function,它只返回 class 標簽,但是,我不知道如何在這種環境中執行此操作,因為 AWS 使用 SKLEARN object,我不相信我可以從中覆蓋或例如 DBSCAN 本身的方法。

任何想法如何從 AWS Sagemaker 中的 a.fit 方法檢索聚類方法的 class 標簽?

一旦你的 Sklearn model 被訓練並在 S3 中保存為 model.tar.gz,你可以將它下載到你選擇的客戶端,解壓它並使用你用來保存它的相同庫重新打開它(pickle,joblib, ETC)。

如果您正在尋找在使用內置 KMeans SageMaker 算法訓練model.tar.gz后打開 model.tar.gz 的方法,請查看分析美國人口普查數據以進行人口細分SageMaker 示例,特別是訪問 KMeans model部分具有此代碼示例的屬性

Kmeans_model_params = mx.ndarray.load("model_algo-1")

如果您想計算(預測)數據集中所有數據點的標簽,您在問題中提供的代碼示例是正確的。

在另一個Bring Your Own Model (k-means)示例中,有一個關於如何打包您自己的 KMeans model 的代碼,例如使用sklearn.cluster.KMeans訓練以在 SageMaker 內置 KMeans 容器內進行推理,特別是,這段代碼是主要部分:

centroids = mx.ndarray.array(kmeans.cluster_centers_)
mx.ndarray.save("model_algo-1", [centroids])

如果您正在尋找在 SageMaker 中托管另一個 SKLearn model 的方法,您需要創建一個inference.py腳本並定義predict_fn()model_fn() ,如SageMaker scikit-learn Bring Your Own Model示例中所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM