使用 Python 和 scikit-learn 生成机器学习模型

获得有关如何从头到尾创建和运行分类模型的实践经验在此数据科学和机器学习教程中,获取有关如何从头到尾创建和运行分类模型的动手示例。本教程涵盖以下步骤:

  • 数据探索

  • 数据预处理

  • 拆分数据以进行训练和测试

  • 准备分类模型

  • 使用流水线组装所有步骤

  • 训练模型

  • 对模型运行预测

  • 评估和可视化模型性能

建立

本教程包括一个用 Python 编写的 Jupyter Notebook。您可以通过 IBM Cloud 帐户使用 Watson Studio 在 IBM Cloud 上运行 Notebook。

  1. 注册或登录。

    • 通过从试用 IBM Cloud Pak for Data 页面登录到 IBM Cloud 帐户来激活 Watson Studio。

    • 通过登录 https://dataplatform.cloud.ibm.com 访问 Watson Studio。

  2. 创建一个空项目。

    • 单击“创建项目”或“新建项目”。

    • 选择“创建空项目”。

    • 为项目命名。

    • 选择现有的对象存储服务实例或创建一个新实例。

    • 单击创建

  3. 添加笔记本。

    • 单击“+添加到项目”。

    • 单击“笔记本”。

    • 单击“从 URL”。

    • 提供名称

    • 在“选择运行时”下,选择“**默认 Python 3.6 免费**”。

    • 输入作为笔记本 URLhttps://raw.githubusercontent.com/IBM/ml-learning-path-assets/master/notebooks/classification_start_to_end_with_scikit_learn.ipynb

    • 单击 Create Notebook

  4. 运行笔记本。

    在打开的 Notebook 中,单击运行”以一次运行一个单元。本教程的其余部分遵循笔记本的顺序。

现在,您已经设置了笔记本,让我们继续开发分类模型,使用包含在线交易平台客户信息的数据集来预测客户是否会流失。

数据探索

在实际的机器学习开始之前,必须执行几个步骤。首先,数据科学家必须分析将用于运行预测的数据的质量。数据的偏倚表示会导致模型偏斜。有几种方法可以分析数据。在本教程中,我们进行了最少的数据探索,足以让您了解所完成的工作。然后,我们继续讨论本主题的核心主题。

关于数据集

在本教程中,我们使用包含在线交易平台客户信息的数据集来对给定客户的流失概率是高、中还是低进行分类。这提供了一个很好的示例来了解如何从头到尾构建分类模型。预测将属于三个类别:高、中和低。现在,让我们仔细看看数据集。

数据以 .csv 文件的形式提供给我们,并使用 pandas 库导入。我们使用 numpy 和 matplotlib 来获取一些统计数据并可视化数据。

使用 Python 和 scikit-learn 生成机器学习模型_第1张图片

我们首先运行几行代码来了解每列的数据类型以及每列中的条目数。

使用 Python 和 scikit-learn 生成机器学习模型_第2张图片

性别列中的计数不匹配(见下图)在数据预处理步骤中处理。

使用 Python 和 scikit-learn 生成机器学习模型_第3张图片

我们使用 matplotlib 绘制了一个基本的条形图,以了解数据如何在不同的输出类之间拆分。如果我们对表征性数据不满意,那么现在是时候获取更多数据用于训练和测试了。

使用 Python 和 scikit-learn 生成机器学习模型_第4张图片

使用 Python 和 scikit-learn 生成机器学习模型_第5张图片

数据预处理

数据预处理是机器学习模型构建过程中的重要步骤,因为只有当训练数据良好且准备充分时,模型才能正常运行。因此,在构建模型时,此步骤会消耗大量时间。

机器学习中执行了几个常见的数据预处理步骤,在本教程中,我们将介绍其中的一些步骤。scikit-learn 提供的预处理选项的完整列表可以在scikit-learn 数据预处理页。

我们首先确定不会为预测输出增加任何价值的列。虽然其中一些列很容易识别,但通常会聘请主题专家来识别其中的大多数列。删除此类列有助于降低模型的维数。

使用 Python 和 scikit-learn 生成机器学习模型_第6张图片

必须为每列自定义应用的预处理技术。Sklearn 提供了一个名为 ColumnTransformer 的库,它允许使用管道将这些技术的序列应用于选择性列。

处理数据集时的一个常见问题是值会丢失。scikit-learn 提供了一种方法,用适用于其上下文的内容填充这些空值。我们使用了 Sklearn 提供的类,并用列中最常见的值填充了缺失值。SimpleImputer

此外,由于机器学习算法在处理数字时比在字符串上表现更好,因此我们希望识别具有类别的列并将其转换为数字。我们使用 Sklearn 提供的类。一个热编码器的想法是创建二进制变量,每个变量代表一个类别。通过这样做,我们删除了仅将数字分配给类别可能发生的任何序号关系。基本上,我们从包含多个类号的单个列转到仅包含二进制类号的多个列。OneHotEncoder

使用 Python 和 scikit-learn 生成机器学习模型_第7张图片

数据集中的数值列将被识别,并应用于每个列。这样,每个值都用其列的平均值减去,然后除以标准偏差。StandardScaler

使用 Python 和 scikit-learn 生成机器学习模型_第8张图片

如前所述,每种技术都按需要应用它们的列进行分组,并使用 .理想情况下,这是在训练模型之前在管道中运行的。但是,为了了解数据的外观,我们已将数据转换为临时变量。ColumnTransformer

使用 Python 和 scikit-learn 生成机器学习模型_第9张图片

机器学习算法不能使用简单文本。我们必须将数据从文本转换为数字。因此,对于每个作为类的字符串,我们分配一个标签,该标签是一个数字。例如,在客户流失数据集中,CHURNRISK 输出标签被分类为高、中或低,并分配了标签 0、1 或 2。为此,我们使用 Sklearn 提供的类。LabelEncoder

使用 Python 和 scikit-learn 生成机器学习模型_第10张图片

你可能感兴趣的:(python,机器学习,scikit-learn,人工智能,深度学习)