请问在使用机器学习PAI ProphetBatchOp的时候,希望保留uuid列,有什么办法可以做到[阿里云机器学习PAI]

请问在使用机器学习PAI ProphetBatchOp的时候,希望保留uuid列,但是这个列只是做为标记使用,有什么办法可以做到?

GroupbyBatchOp select里加上uuid会导致这个报错,因为我其实并不想把uuid做为groupby的依据

请问该如何解决?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 当你使用机器学习PAI中的ProphetBatchOp时,想要保留uuid列作为标记列而不参与模型训练和预测时,可以考虑以下方法:

    1. Drop列:在使用ProphetBatchOp之前,可以在数据处理流程中使用DropColumnsBatchOp来删除uuid列。这样,在ProphetBatchOp中只会使用到需要的列进行训练和预测,而uuid列将被舍弃。

    2. 保留列但不用于训练和预测:如果你希望在ProphetBatchOp中保留uuid列,并将其作为标记列,但又不希望其参与模型的训练和预测过程,可以在数据处理过程中将uuid列从特征集合中移除或设置为无效值。ProphetBatchOp通常接受一个featureCols参数,可以将uuid列排除在外,仅选择需要的特征列进行模型训练和预测。

  2. 这个需要groupbyOp后先joinBatchOp原表,再输入ProphetBatchOp。
    此回答整理自钉群“Alink开源–用户群”。

  3. 在使用机器学习PAI ProphetBatchOp时,如果您希望保留uuid列,但不将其作为分组关键字,可以通过以下方法实现:

    使用Select操作符来选择需要保留的列,并将其命名为新的列名,例如uuid列可以选择为uuid_new:

    ProphetBatchOp prophetBatchOp = new ProphetBatchOp()
    .setTimeCol(“time”)
    .setPrimaryKeyCol(“key”)
    .setDsCol(“ds”)
    .setPredictionCol(“prediction”);

    BatchOperator result = prophetBatchOp.linkFrom(inputBatchOp)
    .select(“uuid as uuid_new”, “other_cols_to_keep”)
    .as(“input”)
    .groupBy(“key”)
    .select(“input.uuid_new as uuid”, “other_cols_to_keep”, “prediction”);

    上述代码做了以下操作:

    使用select操作选择需要保留的列,包括uuid列,并将其重命名为uuid_new列。
    对select操作的结果进行重命名为input表。
    对input表进行分组操作,根据key列进行分组。
    对分组后的结果再次进行select操作,选择需要保留的列,并将uuid_new列重命名为uuid列。
    使用setReservedCols方法将uuid列添加到保留列列表中(前提是uuid列在原始数据中存在):
    reasonml
    Copy
    ProphetBatchOp prophetBatchOp = new ProphetBatchOp()
    .setTimeCol(“time”)
    .setPrimaryKeyCol(“key”)
    .setDsCol(“ds”)
    .setPredictionCol(“prediction”)
    .setReservedCols(“uuid”);

    BatchOperator result = prophetBatchOp.linkFrom(inputBatchOp)
    .groupBy(“key”)
    .select(“uuid”, “other_cols_to_keep”, “prediction”);
    上述代码做了以下操作:

    使用setReservedCols方法将uuid列添加到保留列列表中。
    对原始数据进行分组操作,根据key列进行分组。
    对分组后的结果进行select操作,选择需要保留的列,包括uuid列。