亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AWS Sagemaker:傳遞給 Estimator 的數據格式是什么?

AWS Sagemaker:傳遞給 Estimator 的數據格式是什么?

墨色風雨 2022-07-05 19:40:59
我正在關注 Sagemaker 的k_nearest_neighbors_covtype示例,并且對他們將訓練數據傳遞給模型的方式有一些疑問。對于那些沒有看過的人,他們從互聯網加載數據,運行一些預處理,然后以某種二進制格式(protobuf/recordIO)將其保存到 S3 存儲桶中。他們的代碼如下:import numpy as npimport boto3import osimport sagemakerimport ioimport sagemaker.amazon.common as smac# preprocessraw_data_file = os.path.join(data_dir, "raw", "covtype.data.gz")raw = np.loadtxt(raw_data_file, delimiter=',')# split into train/test with a 90/10 splitnp.random.seed(0)np.random.shuffle(raw)train_size = int(0.9 * raw.shape[0])train_features = raw[:train_size, :-1]train_labels = raw[:train_size, -1]test_features = raw[train_size:, :-1]test_labels = raw[train_size:, -1]# write to bufferbuf = io.BytesIO()smac.write_numpy_to_dense_tensor(buf, train_features, train_labels)buf.seek(0)# upload to s3bucket = sagemaker.Session().default_bucket()prefix = 'knn-blog-2018-04-17'key = 'recordio-pb-data'boto3.resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'train', key)).upload_fileobj(buf)s3_train_data = 's3://{}/{}/train/{}'.format(bucket, prefix, key)print('uploaded training data location: {}'.format(s3_train_data))稍后,在調用時model.fit(),他們將 S3 存儲桶路徑作為訓練數據集傳遞。我無法理解如何從這個示例中構建數據,我還想知道是否有更簡單的方法可以直接從 pandas 數據幀加載數據。我的問題:假設在預處理后我有一個以下格式的熊貓數據框(~10k 條記錄):type         brown   green   red     yellowNAME                                       awfulbrown     0.00   33.33   33.33   33.33candyapple     0.00    0.00  100.00    0.00grannysmith    2.96   95.19    0.00    0.72我想將此傳遞給最近的鄰居,并根據type(顏色)權重將其映射/聚類,每個點都用NAME. 例如,點將candyapple位于red軸上的 100 處, 和 上的 0.00green處yellow。然后打算傳遞一組新的顏色坐標(例如,red: 90.09, yellow: 0.33, green: 9.58將 return candyapple)并將單個最近鄰居返回到該點(我們存儲在記錄中的那些值的最接近的近似值)。在將此數據幀傳遞給 Sagemaker 的 KNN 模型之前,我需要對其執行哪些進一步的預處理?傳遞數據框的最簡單方法是什么?有沒有辦法將它直接傳遞給模型?
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您不能將數據框直接傳遞給內置的 KNN 算法。它支持兩種輸入訓練格式:CSV 或 RecordIO protobuf:https ://docs.aws.amazon.com/sagemaker/latest/dg/kNN-in-formats.html 。


后者效率更高,因此是我們推薦的。


在您的情況下,您只需使用 to_numpy() 將數據框轉換為 numpy 數組,然后您可以重用筆記本中的代碼。


import pandas as pd

index = [1, 2, 3, 4]

a = ['a', 'b', 'c', 'd']

b = [1, 2, 3, 4]

df = pd.DataFrame({'A': a, 'B': b}, index=index)

n = df.to_numpy()

print(n)

type(n)

您使用的筆記本實際上是在展示如何使用 KNN 進行分類。這個集群示例可能更容易理解:https ://data.solita.fi/machine-learning-building-blocks-in-aws-sagemaker/


查看完整回答
反對 回復 2022-07-05
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號