如何解决无法删除 Azure Synapse AutoML 需求预测错误:提供了无效的参数 [y] 值
我正在尝试使用 Spark 和 sql 上下文在 Synapse Notebook 中使用 Azure AutoML 构建一个简单的需求预测模型。
根据日期和商品 ID 汇总商品数量后,event_file_processed.parquet
文件中的数据如下所示:
日期范围为 2020-08-13 至 2021-02-08。
我正在关注 MS 的此文档:https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-forecast
以下是我如何划分 train_data
和 test_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
有两个问题:
-
由于您从 Synapse 运行,您可能打算在 Spark 计算上运行 AutoML。在这种情况下,您需要将 spark 上下文传递给 AutoMLConfig 构造函数:
spark_context=sc
-
其次,您似乎将 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 举报,一经查实,本站将立刻删除。