我可以让Amazon SageMaker根据历史数据而不是概率分数来提供建议吗?

时间:2019-03-14 08:50:56

标签: amazon-web-services amazon-sagemaker

我们拥有大量CSV格式的数据,其中包含一些数字元素,如下所示:

Year,BinaryDigit,NumberToPredict,JustANumber, ...other stuff
1954,1,762,16, ...other stuff
1965,0,142,16, ...other stuff
1977,1,172,16, ...other stuff

这里的事情是,第三列和之前的列之间存在很强的相关性。因此,我已经对数据进行了预处理,现在可以以我认为是完美的格式使用它:

1954,1,762
1965,0,142
1977,1,172

我想要的是对第三列中的值的谓词,并使用前两个作为输入。因此,在上述情况下,我希望输入1965,0返回142。在现实生活中,此文件有数千行,但是由于有某种模式,我想检索尽可能多的值。

到目前为止,我已经使用L inear Learner 算法在CSV文件上设置了火车作业,并具有以下设置:

label_size = 1
feature_dim = 2
predictor_type = regression

我还从中创建了一个模型,并设置了一个端点。调用它时,我会得到一个分数。

    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                   ContentType='text/csv',
                                   Body=payload)

我的目标是获取第三列预测。我该如何实现?我已经阅读了很多与此有关的文档,但是由于我对AWS不太熟悉,因此我可能会为尝试使用的算法使用错误的算法。

(请随时编辑此问题以更适合AWS术语)

2 个答案:

答案 0 :(得分:2)

对于csv输入,标签应位于第一列,如here所述:因此,您应预处理数据以将标签(要预测的列)放在左侧。

接下来,您需要确定这是回归问题还是分类问题。

如果您想预测一个尽可能接近真实数字的数字,那就是回归。例如,真值可能为4,而模型可能预测为4.15。如果需要整数预测,则可以对模型的输出进行四舍五入。

如果您希望预测成为少数几个类别之一,则存在分类问题。例如,我们可以对'North America'= 0,'Europe'= 1,'Africa'= 2等进行编码。在这种情况下,分数预测是没有意义的。

要进行回归分析,请使用'predictor_type' = 'regressor',对于超过2个类的分类,请按照here的说明使用'predictor_type' = 'multiclass_classifier'

回归的输出将仅包含'score'字段,这是模型的预测。多类分类的输出将包含'predicted_label'字段(该字段是模型的预测)以及'score'字段(该字段是表示模型的置信度的概率的向量)。概率最高的索引将被预测为'predicted_label'。输出格式记录在here中。

答案 1 :(得分:0)

predictor_type = regression无法返回预测的标签,

the linear-learner documentation

  

出于推理,线性学习器算法支持application / json,application / x-recordio-protobuf和text / csv格式。对于二元分类模型,它同时返回得分和预测标签。对于回归,它仅返回分数。

     

有关输入和输出文件格式的更多信息,请参阅Linear Learner Response Formats进行推断,以及Linear Learner Sample Notebooks