是否可以更改 Azure 机器学习端点中的输入变量?

问题描述 投票:0回答:1

我有一个输入数据集,其中包含仅在未来已知的列,我使用它们进行训练(例如到达时间)。输入数据如下。 { "收件人地址邮政编码", “收件人地址国家代码”, “卸载日期时间”:, “卸载日期时间”, “装载米”, "应付重量", “姓名” }

我使用以下 python 代码在导入后立即转换这些列:

import os
import pandas as pd

def transform_data(df):
    if 'unloadInDatetime' in df.columns and 'unloadOutDatetime' in df.columns:
        # Convert to datetime if not already
        datetime_format = '%Y-%m-%d %H:%M:%S.%f'  # Format to include microseconds
        df['InDateTime'] = pd.to_datetime(df['unloadInDatetime'], format=datetime_format, errors='coerce')
        df['OutDateTime'] = pd.to_datetime(df['unloadOutDatetime'], format=datetime_format, errors='coerce')

        # Extract date components and hour as integer
        df['InDate'] = df['InDateTime'].dt.date
        df['InTime'] = df['InDateTime'].dt.hour  # Extract hour as integer
        df['InTime'] = df['InTime'].astype(int)
        df['OutDate'] = df['OutDateTime'].dt.date
        df['OutTime'] = df['OutDateTime'].dt.time

        # Other transformations
        df['toAddressPostCode'] = df['toAddressPostCode'].str[:5]
        df['UnloadMonth'] = df['InDateTime'].dt.month
        df['UnloadWeekday'] = df['InDateTime'].dt.weekday + 1

        # Calculate the duration
        df['UnloadingTime'] = (df['OutDateTime'] - df['InDateTime']).dt.total_seconds() / 60
        df['UnloadingTime'] = df['UnloadingTime'].astype(int)

        # Filter the data
        df = df[(df['UnloadingTime'] > 5) & (df['UnloadingTime'] < 300)]
        df.reset_index(drop=True, inplace=True)

        # Select desired columns
        df = df[['UnloadingTime', 'toAddressCountryCode', 'toAddressPostCode', 'UnloadWeekday', 'UnloadMonth', 'loadingMeters', 'payableWeight', 'InTime', 'name']]
    else:
        print("Required columns not found in the DataFrame")
    return df

def azureml_main(dataframe1=None, dataframe2=None):
    # Perform your data transformation
    if dataframe1 is not None:
        df_transformed = transform_data(dataframe1)
    else:
        df_transformed = pd.DataFrame()

    return df_transformed, None

从此我想使用这些列作为我的端点的输入数据: { “收件人地址国家代码” “收件人地址邮政编码” “卸载工作日” “卸载月” “装载量表” “应付重量” “银泰” “姓名” }

有什么办法可以实现这个目标吗?

首先,我运行流程并将其作为终点来实现。流程如下: enter image description here

我已经检查了整个流程,看看我想要使用的列是否存在,它们确实存在。在端点测试窗口中,我尝试输入所需的列,但随后弹出错误,提示“输入数据与架构不一致”。

endpoint azure-machine-learning-service
1个回答
0
投票

每当您尝试对模型端点进行评分时,它都应该与训练它的端点架构相匹配。

如果不匹配,请转换输入数据,使其与端点输入架构匹配。

或者, 修改评分脚本,以与预测相匹配的方式转换输入数据并创建端点。

您可以在使用注册模型创建具有自定义评分脚本的在线端点时进行这些更改。

enter image description here

转到模型选项卡并打开注册的模型。 您将看到一个部署选项;单击它,系统将提示您输入一些内容。在那里,您需要上传更改后的评分脚本。

enter image description here

下面是一个示例脚本,您可以参考 分数.py

© www.soinside.com 2019 - 2024. All rights reserved.