8.1数据勘探和转换

要创建一种机器学习模型,推荐用户查看特定产品时可能喜欢的产品,您需要分析用户在网站上先前购买的产品。 在本课中,您将探索通过Adobe Analytics流向平台的购买数据,并将这些数据转换为有助于培训机器学习模型的功能数据集。

登录Adobe Experience Platform的URL为:https://experience.adobe.com/platform

8.1.1浏览数据集和XDM模式

Adobe Experience Platform的体验数据模型(XDM)有助于实现数据标准化,从而在整个组织内高效地使用数据。

登录到Adobe Experience Platform

登录后,您将登录Adobe Experience Platform的主页。

数据获取

在继续之前,您需要选择​沙箱。 要选择的沙箱名为--aepSandboxId--。 单击屏幕顶部蓝线中的文本​Production Prod​即可执行此操作。

数据获取

选择适当的沙箱后,屏幕将发生变化,现在您就位于专用沙箱中。

数据获取

从左菜单,单击​数据集

DSW

为了开发产品推荐机器学习模型,我们对用户先前通过Luma购买的产品感兴趣。 为简化培训机器学习模型所需的模式,我们创建了一个称为“Recommendations输入”的简单模式,如下表(关键字段:userid —— 与Luma网站交互的用户,时间戳——交互时间、interactiontype —— 购买、itemid —— 用户与之交互的产品)。

在本教程中,我们将使用三个数据集:

数据集名称 数据集架构 描述
演示系统——网站事件数据集(Global v1.1) 演示系统——网站事件数据集(Global v1.1)模式 来自网站的点击流数据
演示系统-Recommendations模型输入的事件数据集(Global v1.1) 演示系统-Recommendations模型输入的事件模式(Global v1.1) 点击流数据将使用功能管道转换为功能/培训数据集。 此数据用于培训产品Recommendations机器学习模型。 itemid和userid对应于该用户在time timestamp购买的产品
演示系统- ML预测的用户档案数据集(Global v1.1) 演示系统- ML预测的用户档案模式(Global v1.1) 模式这是您在评分后获得的数据集。 它包含每个用户的推荐产品列表

让我们看一下​演示系统——网站事件数据集(Global v1.1)​数据集。

在“事件集-”页面上,在搜索框中输入​演示系统——网站的集

DSW

打开数据集​Demo System —— 网站事件数据集(Global v1.1)

DSW

通过单击​预览数据集​按钮,您可以查看将哪些数据发送到该数据集以及数据模型的外观。 FYI —— 数据集中的数据可能有所不同。 这是正常的,是预期的。

DSW

DSW

关闭数据集的预览窗口。

让我们看看为此数据集定义的模式。

从左菜单中,选择​模式

DSW

在模式概述中,搜索以查找您将在本实验中使用的3个模式。

模式名称
演示系统-Recommendations模型输入的事件模式(Global v1.1)
演示系统- ML预测的用户档案模式(Global v1.1)
演示系统——网站事件模式(Global v1.1)

单击以打开名为​Demo System - Website的模式模式(Global v1.1)​的事件。

DSW

8.1.2 Open Jupyter Notebooks

现在,我们去Jupyter笔记本吧。

在左菜单中,单击​笔记本

DSW

单击​JupyterLab。 现在您将看到JupyterLab正在加载。 这可能需要1-2分钟。

DSW

运行Jupyter Notebooks后,您可以继续下一步。

DSW

8.1.3转换点击流数据

Jupyter Notebooks正在运行,因此您可以开始构建笔记本并添加所需代码的过程,以便将点击流数据转换为可用的数据集,以便进行培训。

DSW

在Jupyter Notebooks中,单击启动器上的Blank按钮,打开空白​Python 3​笔记本。

DSW

然后,您将拥有空白的、空白的新Python 3笔记本。 在继续操作之前,请为笔记本提供一个描述性名称。 右键单击​Untitled.ipynb​文件,然后单击​重命名

DSW

输入​luma-recommendations-feature-transformation.ipynb​作为笔记本的名称,然后点击​Enter。 然后您将拥有:

DSW

您接下来将做的:

  • 定义此笔记本的输入和输出数据集
  • 阅读表单平台:加载输入数据集并描述它
  • 筛选空值
  • 将item_id拆分为单个记录
  • 创建一个新的数据框架,其中包含我们的模型所需的数据
  • 写入平台:将数据帧输出到Adobe Experience Platform的数据集

定义此笔记本的输入和输出数据集

单击笔记本中的第一个单元格。

DSW

复制下面的代码并将其粘贴到笔记本的第一个单元格中。

import pandas as pd

inputDataset="--aepWebsiteInteractionsDatasetId--" # Demo System - Event Dataset for Website (Global v1.1) Dataset
outputDataset="--aepRecommendationsInputDatasetId--" # Demo System - Event Dataset for Recommendations Model Input (Global v1.1)
tenant_id = "--aepTenantId--"
item_id = "web.webPageDetails.name"
interactionType = "eventType"
user_id = "--aepTenantId--.identification.core.ecid"
brand_name = "--aepTenantId--.demoEnvironment.brandName"
timestamp = "timestamp"
idcolumn = "_id"

client_context = PLATFORM_SDK_CLIENT_CONTEXT
重要

环境变量​aepWebsiteInteractionsDatasetId​和​aepRecommendationsInputDatasetId​引用在您的Adobe Experience Platform实例中创建的数据集的数据集ID。

aepWebsiteInteractions DatasetIdre向数据集演示系统的数据集ID —— 网站事件数据集(Global v1.1) , aepRecommendationsInputDatasetIdre向数据集演示系统的数据集ID -Recommendations模型输入 ​的事件数据集(Global v1)。1) 。将代码粘贴到笔记本中的第一个单元格时,将环境变量替换为数据集ID。

然后,您将在单元1中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

执行此单元格可能需要几秒钟到几分钟。 只需等待,在您得到以下结果之前,不要在笔记本中执行任何操作。

每次按播放按钮执行单元格时,您都会看到一个指示器,告诉您您的操作是否仍在进行中。

按播放按钮执行单元格时,此为指示符:

DSW

这是执行单元格和操作完成时的指示器:

DSW

在指示器显示执行完成之前,不要继续练习。 如果您不等待执行完成,您会被卡住并在后续步骤中收到许多错误。 这适用于在任何Jupyter笔记本中执行所有单元格:请始终等待执行完成,您会看到指示符发生更改,如下所示:

DSW

执行单元格1后没有可视结果。 单击播放按钮后,继续执行下一步。

从平台读取:加载输入数据集并显示数据的概述

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

from platform_sdk.dataset_reader import DatasetReader

dataset_reader = DatasetReader(client_context, inputDataset)
df = dataset_reader.limit(1000).read()
df.head()

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

执行此单元格可能需要1-2分钟。 只需等待,在您得到以下结果之前,不要在笔记本中执行任何操作。

DSW

请等到指示器如此后再继续:

DSW

结果将如下所示(但不会相同——您的Adobe Experience Platform实例中可能有更多或更少的可用数据):

DSW

过滤掉空值并为品牌Luma选择数据

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

# drop nulls
df = df.dropna(subset=[user_id, item_id, interactionType, brand_name])

# only focus on one brand
df = df[df[brand_name].isin(["Luma", "Luma Retail"])]

# filter out product views
df = df[df[interactionType].isin(["commerce.productViews"])]

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

请等到指示器如此后再继续:

DSW

执行此操作后没有可视结果。 单击播放按钮后,继续执行下一步。

将项目拆分为单个记录

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

# vectorized (no loops) solution for splitting in pandas
# source: https://stackoverflow.com/a/48120674
def split_df(dataframe, col_name, sep):
    orig_col_index = dataframe.columns.tolist().index(col_name)
    orig_index_name = dataframe.index.name
    orig_columns = dataframe.columns
    dataframe = dataframe.reset_index()
    index_col_name = (set(dataframe.columns) - set(orig_columns)).pop()
    df_split = pd.DataFrame(
        pd.DataFrame(dataframe[col_name].str.split(sep).tolist())
        .stack().reset_index(level=1, drop=1), columns=[col_name])
    df = dataframe.drop(col_name, axis=1)
    df = pd.merge(df, df_split, left_index=True, right_index=True, how='inner')
    df = df.set_index(index_col_name)
    df.index.name = orig_index_name

    return df

df2 = split_df(df, item_id, "\|\|")

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

执行此单元格可能需要1-2分钟。 只需等待,在您得到以下结果之前,不要在笔记本中执行任何操作。

请等到指示器如此后再继续:

DSW

执行此操作后没有可视结果。 单击播放按钮后,继续执行下一步。

将数据保存回Adobe Experience Platform前,先准备好

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

filtered_column_list = [idcolumn, item_id, user_id, interactionType, brand_name, timestamp]

df2 = df2[filtered_column_list]

df2.rename(columns={
    item_id: tenant_id + ".recommendationsInput" + ".productSku",
    user_id: tenant_id + ".recommendationsInput" + ".ecid",
    interactionType: tenant_id + ".recommendationsInput" + ".interactionType",
    brand_name: tenant_id + ".recommendationsInput" + ".brandName"
}, inplace=True)

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

执行此单元格可能需要1-2分钟。 只需等待,在您得到以下结果之前,不要在笔记本中执行任何操作。

请等到指示器如此后再继续:

DSW

执行此操作后没有可视结果。 单击播放按钮后,继续执行下一步。

写入平台:将数据帧输出到Adobe Experience Platform的数据集

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

df2.head()

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

请等到指示器如此后再继续:

DSW

结果如下:

DSW

单击笔记本中的下一个空单元格。

DSW

复制下面的代码并将其粘贴到笔记本的下一个空单元格中。

df2['timestamp'] = pd.to_datetime(df2['timestamp']).apply(lambda x: x.isoformat())

from platform_sdk.models import Dataset
from platform_sdk.dataset_writer import DatasetWriter
dataset = Dataset(PLATFORM_SDK_CLIENT_CONTEXT).get_by_id(dataset_id=outputDataset)
dataset_writer = DatasetWriter(PLATFORM_SDK_CLIENT_CONTEXT, dataset)
write_tracker = dataset_writer.write(df2, file_format='json')

然后,您将在该单元格中显示此内容:

DSW

单击播放按钮以执行此单元格。

DSW

请等到指示器如此后再继续:

DSW

结果如下:

DSW

在Adobe Experience Platform的结果是,在​演示系统-Recommendations模型输入的事件数据集(Global v1.1)​上创建了新的一批数据,您可以通过转到
此处

DSW

DSW

下一步:8.2 —— 模型创作和操作

返回模块8

返回到所有模块

在此页面上