如何使用 Apache Spark MLlib 训练模型 您所在的位置:网站首页 逻辑回归模型实例 如何使用 Apache Spark MLlib 训练模型

如何使用 Apache Spark MLlib 训练模型

2023-05-30 17:29| 来源: 网络整理| 查看: 265

使用 Apache Spark MLlib 生成机器学习模型 项目 05/23/2023

重要

Microsoft Fabric 目前为预览版。 此信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 Microsoft 不对此处提供的信息作任何明示或默示的担保。

本文介绍如何使用 Apache Spark MLlib 创建机器学习应用程序,该应用程序对 Azure 开放数据集执行简单的预测分析。 Spark 提供内置机器学习库。 此示例通过逻辑回归使用分类。

SparkML 和 MLlib 是核心 Spark 库,提供许多可用于机器学习任务的实用工具,包括适用于以下任务的实用工具:

分类 回归 群集 主题建模 单值分解 (SVD) 和主体组件分析 (PCA) 假设测试和计算示例统计信息 了解分类和逻辑回归

分类是一种常见的机器学习任务,是将输入数据按类别排序的过程。 它是一种分类算法的作业,旨在算出如何将标签分配到提供的输入数据。 例如,可以联想机器学习算法,该算法接受股票信息作为输入并将股票划分为两个类别:应该卖出的股票和应该保留的股票。

逻辑回归是可用于分类的算法。 Spark 的逻辑回归 API 可用于 二元分类,或将输入数据归类到两组中的一组。 有关逻辑回归的详细信息,请参阅维基百科。

总之,逻辑回归的过程会产生一个逻辑函数,可用于预测输入向量属于一个组或另一个组的概率。

NYC 出租车数据的预测分析示例

若要开始,请安装 azureml-opendatasets。 数据通过 Azure 开放数据集提供。 数据集的此子集包含有关黄色出租车行程的信息,包括开始和结束时间和位置、成本以及其他属性。

%pip install azureml-opendatasets

在本文的其余部分,我们将使用 Apache Spark 对 NYC 出租车行程小费数据执行一些分析,然后开发一个模型来预测特定行程是否包含小费。

创建 Apache Spark 机器学习模型

创建 PySpark 笔记本。 有关说明,请参阅创建笔记本。

导入此笔记本所需的类型。

import matplotlib.pyplot as plt from datetime import datetime from dateutil import parser from pyspark.sql.functions import unix_timestamp, date_format, col, when from pyspark.ml import Pipeline from pyspark.ml import PipelineModel from pyspark.ml.feature import RFormula from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorIndexer from pyspark.ml.classification import LogisticRegression from pyspark.mllib.evaluation import BinaryClassificationMetrics from pyspark.ml.evaluation import BinaryClassificationEvaluator

我们将使用 MLflow 跟踪机器学习试验和相应的运行。 如果启用了 Microsoft Fabric 自动日志记录,则会自动捕获相应的指标和参数。

import mlflow 构造输入数据帧

在此示例中,我们将数据加载到 Pandas 数据帧中,然后将其转换为 Apache Spark 数据帧。 使用此格式,我们可以应用其他 Apache Spark 操作来清理和筛选数据集。

通过将代码粘贴到新单元格,运行以下行来创建 Spark 数据帧。 此步骤会通过开放数据集 API 检索数据。 我们可以向下筛选此数据,查看特定的数据窗口。 下面的代码示例使用 start_date 和 end_date 来应用一个会返回单个月份数据的筛选器。

from azureml.opendatasets import NycTlcYellow end_date = parser.parse('2018-06-06') start_date = parser.parse('2018-05-01') nyc_tlc = NycTlcYellow(start_date=start_date, end_date=end_date) nyc_tlc_pd = nyc_tlc.to_pandas_dataframe() nyc_tlc_df = spark.createDataFrame(nyc_tlc__pd).repartition(20)

以下代码将数据集减少到大约 10,000 行。 为了加快开发和训练,我们将立即对数据集进行采样。

# To make development easier, faster, and less expensive, sample down for now sampled_taxi_df = nyc_tlc_df.sample(True, 0.001, seed=1234)

接下来,我们希望使用内置 display() 命令查看数据。 这使我们能够轻松查看数据示例或以图形方式浏览数据的趋势。

#sampled_taxi_df.show(10) display(sampled_taxi_df.limit(10)) 准备数据

数据准备是机器学习过程中的关键一步。 它涉及清理、转换和组织原始数据,使其适合分析和建模。 在以下代码中,执行多个数据准备步骤:

通过筛选数据集删除离群值和错误值 删除模型训练不需要的列 从原始数据创建新列 生成一个标签,以确定给定的出租车行程是否会有小费 taxi_df = sampled_taxi_df.select('totalAmount', 'fareAmount', 'tipAmount', 'paymentType', 'rateCodeId', 'passengerCount'\ , 'tripDistance', 'tpepPickupDateTime', 'tpepDropoffDateTime'\ , date_format('tpepPickupDateTime', 'hh').alias('pickupHour')\ , date_format('tpepPickupDateTime', 'EEEE').alias('weekdayString')\ , (unix_timestamp(col('tpepDropoffDateTime')) - unix_timestamp(col('tpepPickupDateTime'))).alias('tripTimeSecs')\ , (when(col('tipAmount') > 0, 1).otherwise(0)).alias('tipped') )\ .filter((sampled_taxi_df.passengerCount > 0) & (sampled_taxi_df.passengerCount < 8)\ & (sampled_taxi_df.tipAmount >= 0) & (sampled_taxi_df.tipAmount = 1) & (sampled_taxi_df.fareAmount 0) & (sampled_taxi_df.tripDistance


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有