无法删除 Azure Synapse AutoML 需求预测错误:提供了参数 [y] 的无效值
Posted
技术标签:
【中文标题】无法删除 Azure Synapse AutoML 需求预测错误:提供了参数 [y] 的无效值【英文标题】:Unable to remove Azure Synapse AutoML demand forecasting error: An invalid value for argument [y] was provided 【发布时间】:2021-07-05 03:13:25 【问题描述】:我正在尝试使用 Spark 和 SQL 上下文在 Synapse Notebook 中使用 Azure AutoML 构建一个简单的需求预测模型。
根据日期和商品 ID 汇总商品数量后,event_file_processed.parquet
文件中的数据如下所示:
日期范围为 2020 年 8 月 13 日至 2021 年 2 月 8 日。
我正在关注 MS 的此文档:https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-forecast
以下是我划分train_data
和test_data
parquet 文件的方法:
%%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 个变量的架构中的类型也是正确的。
如果您能提出一些建议,我将不胜感激。
谢谢, 山塔努耆那教
【问题讨论】:
【参考方案1】:假设您没有使用 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 团队)
【讨论】:
以上是关于无法删除 Azure Synapse AutoML 需求预测错误:提供了参数 [y] 的无效值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure Synapse 在 Databricks 上删除表或删除行?
SqlServerRegionDoesNotAllowProvisioning:无法创建 Azure Synapse Analytics 工作区
Azure Synapse Studio - 无法创建 SQL 池