1. 首页
  2. 机器学习

Python的第一个机器学习项目

Python的第一个机器学习项目

您是否想使用Python进行机器学习,但入门上却遇到困难?

在本文中,您将使用Python完成第一个机器学习项目。

在本分步教程中,您将:

  1. 下载并安装Python SciPy,并获取最有用的Python机器学习软件包。
  2. 使用统计摘要和数据可视化加载数据集并了解其结构。
  3. 创建6个机器学习模型,选择最佳模型,并建立对准确性可靠的信心。

您如何开始使用Python进行机器学习?

学习机器学习的最佳方法是设计和完成小型项目。

入门时,Python可能会令人生畏

Python是一种流行且功能强大的解释语言。与R不同,Python是一种完整的语言和平台,可用于研发和开发生产系统。

还有许多模块和库可供选择,提供了完成每种任务的多种方法。感觉压倒了。

开始使用Python进行机器学习的最好方法是完成一个项目。

  • 它将迫使您安装和启动Python解释器(至少)。
  • 它将使您鸟瞰如何完成一个小项目。
  • 这会让您充满信心,也许可以继续进行自己的小型项目。

初学者需要一个小的端到端项目

书籍和课程令人沮丧。它们为您提供许多食谱和摘要,但您永远都看不到它们如何融合在一起。

当您将机器学习应用于自己的数据集时,您正在从事一个项目。

机器学习项目可能不是线性的,但是有许多众所周知的步骤:

  1. 定义问题。
  2. 准备数据。
  3. 评估算法。
  4. 改善结果。
  5. 目前的结果。

真正使用新平台或工具达成共识的最佳方法是端到端完成机器学习项目并涵盖关键步骤。即,从加载数据,汇总数据,评估算法和做出一些预测。

如果可以这样做,那么您将拥有一个可以在一个数据集之后一个数据集上使用的模板。一旦有了更多的信心,您就可以填补空白,例如进一步的数据准备和改善结果任务。

Python机器学习:循序渐进教程
(从此处开始)

在本节中,我们将端到端完成一个小型机器学习项目。

以下是我们将要介绍的内容的概述:

  1. 安装Python和SciPy平台。
  2. 加载数据集。
  3. 汇总数据集。
  4. 可视化数据集。
  5. 评估一些算法。
  6. 做一些预测。

慢慢来。完成每个步骤。

尝试自己输入命令或复制并粘贴命令以加快操作速度。

如果您有任何疑问,请在文章底部发表评论。

1.下载,安装和启动Python SciPy

如果尚未安装Python和SciPy平台,请在您的系统上安装它。

我不想详细介绍这一点,因为其他人已经知道了。这已经非常简单了,特别是如果您是开发人员。如果您确实需要帮助,请在评论中提出问题。

1.1安装SciPy库

本教程假定使用python 2.7或3.6+版本。

您需要安装5个密钥库。以下是本教程所需的Python SciPy库的列表:

  • 科学的
  • 麻木
  • matplotlib
  • 大熊猫
  • 清除

有许多安装这些库的方法。我最好的建议是选择一种方法,然后在安装每个库时保持一致。

该SciPy的安装页面提供了多个不同的平台,如Linux,Mac OS X和Windows上安装上述库极好的说明。如果您有任何疑问或疑问,请参阅本指南,成千上万的人关注着它。

  • 在Mac OS X上,您可以使用macports安装Python 3.6和这些库。有关macports的更多信息,请参见主页
  • 在Linux上,您可以使用软件包管理器(例如Fedora上的yum)来安装RPM。

如果您使用Windows或不确定,我建议安装免费版本的Anaconda,其中包括您需要的所有内容。

注意:本教程假定您已安装scikit-learn 0.20或更高版本。

1.2启动Python并检查版本

确保您的Python环境已成功安装并且可以按预期工作,这是一个好主意。

下面的脚本将帮助您测试环境。它将导入本教程所需的每个库并打印版本。

打开命令行并启动python解释器:

我建议直接在解释器中工作或编写脚本并在命令行(而不是大型编辑器和IDE)上运行它们。保持简单,专注于机器学习而不是工具链。

输入或复制并粘贴以下脚本:

这是我在OS X工作站上获得的输出:

将以上输出与您的版本进行比较。

理想情况下,您的版本应该匹配或较新。API不会快速更改,因此如果您的版本落后几个,也不必太担心,本教程中的所有内容很可能仍然对您有用。

如果出现错误,请停止。现在该修复它了。

2.加载数据

我们将使用鸢尾花数据集。该数据集之所以闻名,是因为几乎所有人都将其用作机器学习和统计中的“ hello world”数据集。

数据集包含150个鸢尾花的观测值。花的测量单位有四列,以厘米为单位。第五列是观察到的花的种类。所有观察到的花均属于三种物种之一。

在此步骤中,我们将从CSV文件URL加载虹膜数据。

2.1导入库

首先,让我们导入将在本教程中使用的所有模块,函数和对象。

一切都应该没有错误地加载。如果有错误,请停止。在继续之前,您需要一个工作正常的SciPy环境。请参阅上面有关设置环境的建议。

2.2加载数据集

我们可以直接从UCI机器学习存储库中加载数据。

我们正在使用熊猫来加载数据。接下来,我们还将使用大熊猫通过描述性统计数据和数据可视化来探索数据。

请注意,我们在加载数据时指定每列的名称。这将在以后探索数据时提供帮助。

数据集应该加载而不会发生任何事件。

如果确实存在网络问题,则可以将iris.csv文件下载到工作目录中,然后使用相同的方法将URL更改为本地文件名来加载它。

3.汇总数据集

现在该看一下数据了。

在这一步中,我们将以几种不同的方式看一下数据:

  1. 数据集的尺寸。
  2. 窥视数据本身。
  3. 所有属性的统计摘要。
  4. 通过类变量对数据进行分类。

不用担心,每次查看数据都是一个命令。这些有用的命令可以在以后的项目中反复使用。

3.1数据集的维数

我们可以通过shape属性快速了解数据包含多少个实例(行)和多少个属性(列)。

您应该看到150个实例和5个属性:

 

3.2查看数据

实际关注您的数据总是一个好主意。

您应该看到数据的前20行:

 

3.3统计摘要

现在我们来看看每个属性的摘要。

这包括计数,平均值,最小值和最大值以及一些百分位数。

我们可以看到,所有的数值都具有相同的标度(厘米),相似的范围介于0到8厘米之间。

 

3.4班级分布

现在让我们看一下属于每个类的实例(行)的数量。我们可以将其视为绝对计数。

我们可以看到每个类具有相同数量的实例(数据集的50或33%)。

 

3.5完整范例

作为参考,我们可以将所有先前的元素绑定到一个脚本中。

下面列出了完整的示例。

 

4.数据可视化

现在,我们对数据有了基本的了解。我们需要通过一些可视化来扩展它。

我们将研究两种类型的图:

  1. 单变量图可以更好地理解每个属性。
  2. 多变量图可更好地了解属性之间的关系。

4.1单变量图

我们从一些单变量图开始,即每个单独变量的图。

假设输入变量是数字变量,我们可以为每个变量创建箱形图和晶须图。

这使我们对输入属性的分布有了更清晰的认识:

鸢尾花数据集的每个输入变量的箱形图和须线图

鸢尾花数据集的每个输入变量的箱形图和须线图

我们还可以为每个输入变量创建一个直方图,以了解分布情况。

看起来其中两个输入变量具有高斯分布。注意这一点很有用,因为我们可以使用可以利用此假设的算法。

鸢尾花数据集的每个输入变量的直方图

鸢尾花数据集的每个输入变量的直方图

4.2多元图

现在我们来看一下变量之间的相互作用。

首先,让我们看看所有属性对的散点图。这有助于发现输入变量之间的结构化关系。

注意一些属性对的对角线分组。这表明高度相关性和可预测的关系。

鸢尾花数据集的每个输入变量的散点矩阵图

鸢尾花数据集的每个输入变量的散点矩阵图

4.3完整的例子

作为参考,我们可以将所有先前的元素绑定到一个脚本中。

下面列出了完整的示例。

 

5.评估一些算法

现在是时候创建一些数据模型并评估其在看不见的数据上的准确性了。

这是我们将在此步骤中介绍的内容:

  1. 分离出验证数据集。
  2. 设置测试工具以使用10倍交叉验证。
  3. 建立多个不同的模型以根据花的测量预测物种
  4. 选择最佳型号。

5.1创建验证数据集

我们需要知道我们创建的模型是好的。

稍后,我们将使用统计方法来估计我们在看不见的数据上创建的模型的准确性。我们还希望通过对实际看不见的数据进行评估,从而对看不见的最佳模型的准确性进行更具体的估计。

也就是说,我们将保留一些算法无法看到的数据,然后我们将使用这些数据来获得第二个独立的想法,即最佳模型实际上可能有多精确。

我们将加载的数据集分为两部分,其中80%将用于训练,评估和选择模型,其余20%将作为验证数据集。

现在,您在X_trainY_train中拥有用于准备模型的训练数据,以及稍后可以使用的X_validationY_validation集。

5.2测试线束

我们将使用分层的10倍交叉验证来估计模型的准确性。

这会将我们的数据集分成10个部分,在9上训练,在1上测试,然后对训练测试拆分的所有组合重复。

分层意味着数据集的每个折叠或分裂都将力争使每个样本的实例分布与整个训练数据集中的分布相同。

我们通过random_state参数将随机种子设置为固定数字,以确保每种算法都在训练数据集的相同分割上进行评估。

我们使用“准确性”的指标来评估模型。

这是正确预测的实例数除以数据集中的实例总数乘以100得到的百分比(例如,准确度为95%)的比率。 当我们运行构建并接下来评估每个模型时,我们将使用评分变量。

5.3建立模型

我们不知道哪种算法可以解决此问题或使用哪种配置。

从图中可以看出,某些类别在某些维度上是部分线性可分离的,因此我们期望总体上取得良好的结果。

让我们测试6种不同的算法:

  • 逻辑回归(LR)
  • 线性判别分析(LDA)
  • K最近邻居(KNN)。
  • 分类和回归树(CART)。
  • 高斯朴素贝叶斯(NB)。
  • 支持向量机(SVM)。

这是简单的线性算法(LR和LDA),非线性算法(KNN,CART,NB和SVM)的很好的结合。

让我们构建和评估我们的模型

 

5.4选择最佳模型

现在,我们有6个模型和每个模型的准确性估算。我们需要将模型进行比较并选择最准确的模型。

运行上面的示例,我们得到以下原始结果:

 

注意:由于算法或评估程序的随机性,或者数值精度的差异,您的结果可能会有所不同。考虑运行该示例几次并比较平均结果。

 

你得到了什么分数?
将您的结果发布在下面的评论中。

在这种情况下,我们可以看到支持向量机(SVM)的估计准确性得分最高,约为0.98或98%。

我们还可以创建模型评估结果的图,并比较每个模型的分布和平均准确性。每种算法都有大量的精度度量,因为每种算法都被评估了10次(通过10倍交叉验证)。

比较每种算法的结果样本的一种有用方法是为每种分布创建箱形图和晶须图并比较分布。

我们可以看到箱形图和晶须图在该范围的顶部被压缩,许多评估达到了100%的准确度,而有些评估则下降到了80%的高准确度。

虹膜花数据集上的箱形图和须图图比较机器学习算法

虹膜花数据集上的箱形图和须图图比较机器学习算法

5.5完整的例子

作为参考,我们可以将所有先前的元素绑定到一个脚本中。

下面列出了完整的示例。

 

6.做出预测

我们必须选择一种算法来进行预测。

上一节中的结果表明,SVM可能是最准确的模型。我们将使用此模型作为最终模型。

现在,我们想对验证集上的模型的准确性有所了解。

这将使我们对最佳模型的准确性进行独立的最终检查。保留验证集非常重要,以防万一您在训练过程中滑倒,例如过度适合训练集或数据泄漏。这两个问题都会导致过于乐观的结果。

6.1做出预测

我们可以在整个训练数据集上拟合模型,并在验证数据集上进行预测。

 

6.2评估预测

我们可以通过将预测结果与验证集中的预期结果进行比较来评估预测结果,然后计算分类准确性以及混淆矩阵和分类报告。

我们可以看到,在保留数据集上,准确性为0.966或大约96%。

混淆矩阵提供了所犯错误的指示。

最后,分类报告按精度,召回率,f1得分和支持分类显示了每个分类,并显示了出色的结果(允许的验证数据集很小)。

 

6.3完整范例

作为参考,我们可以将所有先前的元素绑定到一个脚本中。

下面列出了完整的示例。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code