微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法删除 Azure Synapse AutoML 需求预测错误:提供了无效的参数 [y] 值

如何解决无法删除 Azure Synapse AutoML 需求预测错误:提供了无效的参数 [y] 值

我正在尝试使用 Spark 和 sql 上下文在 Synapse Notebook 中使用 Azure AutoML 构建一个简单的需求预测模型。

根据日期和商品 ID 汇总商品数量后,event_file_processed.parquet 文件中的数据如下所示:

enter image description here

日期范围为 2020-08-13 至 2021-02-08。

我正在关注 MS 的此文档:https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-forecast

以下是我如何划分 train_datatest_data 镶木地板文件

%%sql
CREATE OR REPLACE TEMPORARY VIEW train_data
AS SELECT 
*
FROM
event_file_processed
WHERE
the_date <= '2020-12-20'
ORDER BY
the_date ASC`

%%sql
CREATE OR REPLACE TEMPORARY VIEW test_data
AS SELECT 
*
FROM
event_file_processed
WHERE
the_date > '2020-12-20'
ORDER BY
the_date ASC`

%%pyspark
train_data = spark.sql("SELECT * FROM train_data")
train_data.write.parquet("train_data.parquet")

test_data = spark.sql("SELECT * FROM test_data")
test_data.write.parquet("test_data.parquet")`

以下是我的 AutoML 设置和运行提交:

from azureml.automl.core.forecasting_parameters import ForecastingParameters

forecasting_parameters = ForecastingParameters(time_column_name='the_date',forecast_horizon=44,time_series_id_column_names=["items_id"],freq='W',target_lags='auto',target_aggregation_function = 'sum',target_rolling_window_size = 3,short_series_handling_configuration = 'auto'
                                               )

train_data = spark.read.parquet("train_data.parquet")
train_data.createOrReplaceTempView("train_data")

label = "total_item_qty"

from azureml.core.workspace import Workspace
from azureml.core.experiment import Experiment
from azureml.train.automl import AutoMLConfig
import logging

automl_config = AutoMLConfig(task='forecasting',primary_metric='normalized_root_mean_squared_error',experiment_timeout_minutes=15,enable_early_stopping=True,training_data=train_data,label_column_name=label,n_cross_validations=3,enable_ensembling=False,verbosity=logging.INFO,forecasting_parameters = forecasting_parameters)

from azureml.core import Workspace,Datastore

# Enter your workspace subscription,resource group,name,and region.
subscription_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #you should be owner or contributor
resource_group = "XXXXXXXXXXX" #you should be owner or contributor
workspace_name = "XXXXXXXXXXX" #your workspace name

ws = Workspace(workspace_name = workspace_name,subscription_id = subscription_id,resource_group = resource_group)
               
experiment = Experiment(ws,"AML-demand-forecasting-synapse")
local_run = experiment.submit(automl_config,show_output=True)
best_run,fitted_model = local_run.get_output()

我严重陷入以下错误

Error:

DataException: DataException:
Message: An invalid value for argument [y] was provided.
InnerException: InvalidValueException: InvalidValueException:
Message: Assertion Failed. Argument y is null. Target: y. Reference Code: b7440909-05a8-4220-b927-9fcb43fbf939
InnerException: None
ErrorResponse

我已经检查过 total_item_qty 中没有空值或恶意值,3 个变量的架构类型也是正确的。

如果你能给我一些建议,我将不胜感激。

谢谢, 香塔努耆那教

解决方法

假设您没有使用 Synapse UI 生成的笔记本。如果您在 Synapse 中使用该向导,它实际上会生成一个您可以运行和调整的 PySpark 笔记本。 此处描述了这种体验:https://docs.microsoft.com/en-us/azure/synapse-analytics/machine-learning/tutorial-automl

有两个问题:

  1. 由于您从 Synapse 运行,您可能打算在 Spark 计算上运行 AutoML。在这种情况下,您需要将 spark 上下文传递给 AutoMLConfig 构造函数:spark_context=sc

  2. 其次,您似乎将 Spark DataFrame 作为训练数据传递给 AutoML。 AutoML 目前仅支持 Spark 场景中的 AML 数据集(TabularDataset)输入类型。您可以进行这样的转换:

df = spark.sql("SELECT * FROM default.nyc_taxi_train")
datastore = Datastore.get_default(ws)
dataset = TabularDatasetFactory.register_spark_dataframe(df,datastore,name = experiment_name + "-dataset")
automl_config = AutoMLConfig(spark_context = sc,....)

还想了解更多有关您的用例以及您打算如何在 Synapse 中使用 AutoML 的信息。如果您有兴趣就该主题建立联系,请告诉我。

谢谢, Nellie(来自 Azure Synapse 团队)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。