在本教程中,您将通过使用Cloudera数据平台(CDP)上的体验Cloudera Machine Learning(CML)了解聚类技术。聚类是一种无监督的机器学习算法,它执行将数据划分为相似组的任务,并有助于将具有相似数据点的组隔离为聚类。
在本教程中,我们将介绍K-means聚类技术。我们将构建模型、部署、监控和创建模型作业,以在来自Kaggle的Mall客户细分数据上演示聚类技术的工作。
聚类是一种无监督的机器学习算法,它执行将数据划分为相似组的任务,并有助于将具有相似数据点的组隔离为聚类。例如,公司经常使用聚类策略来寻找有趣的客户模式以增强业务、零售商店考虑想要增加销售量。公司可以调查每个客户的详细信息以制定其业务策略吗?那不容易。但是,公司可以根据客户的购买习惯将其划分为不同的群体,然后对每个群体应用一种策略。
在本教程中,我们将探讨一种基于质心的聚类方法,称为K-means聚类模型。
这些类型的聚类模型基于数据点和聚类质心之间的紧密度来计算两个数据点之间的相似度。这些模型迭代运行以找到给定数量的聚类(作为外部参数传入)的局部最优值。K-MEANS聚类属于此类别。
给定多个样本k,可以按以下方式执行K-means算法:
本节描述了如何使用CML创建模型和创建要运行的作业的示例。
就本教程而言,我们将创建一个模型,该模型将使用scikit-learn演示K-Means聚类概念。要运行此项目,您必须准备好环境。请按照以下步骤设置环境,然后运行模型。
创建一个新项目。请注意,始终在项目的上下文中创建模型。为您的项目命名,然后选择python作为模板来运行代码。
接下来,下载代码段 并将其解压缩到本地计算机上。使用项目概述页面中的“文件”选项卡上传K-means.py文件。还上传名为Mall_Customers.csv的数据集。
数据集概述:Mall_Customers.csv数据集是从Kaggle获得的,该数据集包含以下属性。在本教程中,我们尝试使用此数据集执行客户细分。
成功上传文件后,通过单击概述页面右上方的Open Workbench来配置工作空间。选择所需的系统规格。在本教程中,我们使用以下规范:
单击New Session,在左边窗格中选择K_means.py,工作区上的代码现在如下所示,可以执行了。
此代码段的主要目的是根据可用功能将数据集中的客户划分为不同的组。我们考虑的两个重要特征是Annual Income和Spending score。我们定义一个名为k_means_calc的函数,它使用n_clusters_val作为参数,该参数是将客户划分为的集群数。使用此代码段,我们将进行实验以观察不同n_clusters_val值的结果。
接下来,运行代码片段。
注意:确保在工作空间上安装了sklearn,以避免执行错误。如下所示,使用工作区右侧的命令行并安装sklearn。
运行代码片段,您的输出应如下所示。
代码的输出表示根据客户的收入和支出得分可以落入的聚类号。另外,我们正在打印为每个聚类获得的中心值。
现在,让我们使用此代码段执行实验。
举个例子,你可以运行K_means.py脚本来启动实验,该实验使用n_clusters_val作为参数,并打印在数据集中的所有客户细分群的阵列,也获得打印每个聚类的中心。您可以最初测试脚本,以避免在运行实验期间出现任何错误。您还可以启动会话,以在启动新实验时同时在交互式控制台上测试代码更改。
要测试脚本,请启动Python会话,并在workbench命令提示符下运行以下命令:
您的输出应如下所示。
现在,要运行实验,请单击“运行”>“运行实验”(如果您已经处于活动会话中)。填写字段:
然后单击“开始运行”以运行实验并观察结果。
要跟踪运行进度,请返回项目概述。在左侧导航栏中,点击实验。您应该在列表顶部看到刚刚运行的实验。
单击“运行ID”以查看每个单独运行的概述。然后点击Build。在此“构建”选项卡上,您可以看到CML为该实验构建Docker映像时的实时进度。这使您可以调试在构建阶段可能发生的任何错误。
实时进行实验时,我们总是好奇地跟踪对跟踪模型性能有用的指标。CML包含内置函数,可用于比较实验并使用CML库保存实验中的任何文件。
例如,使用K_means.py脚本,我们将包括一个称为聚类的度量,以跟踪脚本正在计算的聚类数(k值)。为了执行此操作,脚本导入了CML库并将以下行添加到脚本中。
您可以在“实验概述”页面中观察到,正在跟踪您创建的指标。
在本节中,我们将讨论内置作业如何帮助自动化分析工作量和管道调度系统,这些系统支持实时监控、作业历史记录和电子邮件警报。
作业:一项作业可以自动执行启动引擎、运行脚本、跟踪结果的整个过程、并且可以按您的要求进行配置,使其按定期计划运行,从而减少了人工干预。您还可以设置有关工作状态的电子邮件警报,并定期为您和您的队友附加输出文件。在项目范围内创建作业。
接下来,使用左侧栏中的作业选项卡创建作业。
单击新建作业,然后输入作业的名称。接下来,通过单击文件夹图标选择要执行的脚本。在这种情况下,请选择K_means.py文件。选择引擎内核作为Python3。
从以下选项之一选择作业运行的计划。
在本教程中,我们使用循环计划每5分钟运行一次。选择引擎配置文件以指定每个会话可用的内核数和内存。
在这里,我们还指定了作业报告收件人的任何列表,您可以向其发送电子邮件通知以及详细的作业报告,以了解作业成功、失败或超时的情况。您可以将这些报告发送给自己、您的团队(如果项目是在团队帐户下创建的)或任何其他外部电子邮件地址。我们暂时不添加任何附件,但是如果您希望它们与电子邮件一起发送,则可以添加任何日志。
单击创建作业。您应该在作业页面中看到创建的作业,如下所示。
接下来,单击操作上的“运行”按钮以开始运行您的作业。工作完成后,您应该将状态视为成功。
然后单击作业名称Run_Kmeans并检查“历史记录”选项卡以查看作业是否过去运行。
本节提供有关使用CML部署模型的信息。我们使用相同的脚本来部署模型。
导航到项目概述>模型页面。
单击“新建模型”,然后填写字段,如下所示。确保使用Python 3内核。例如,这里我们使用K_means.py脚本,作为示例,输入将是以JSON格式编写的n_clusters_val。您可以根据需要灵活选择引擎配置文件和GPU功能。CML还提供了为模型选择副本的选项,可帮助避免在生产模型时出现单点故障。
单击部署模型。单击模型以转到其概述页面。在构建模型时,您可以在“构建”页面上跟踪进度。部署后,您可以在“监控”页面上看到已部署的副本。
检查构建选项卡以跟踪模型的进度
监控选项卡提供有关模型的信息,在这里您可以查看副本信息,已处理、失败、状态、错误等。
单击设置时,您还可以选择删除模型。
恭喜你!您已经了解了使用Cloudera Machine Learning进行K-means聚类的概念,以及如何将其用于从模型开发到模型部署的端到端机器学习。
原文链接:https://www.cloudera.com/tutorials/cml-build-a-clustering-model.html