我将在下面使用的技术来构建我们的第一个示例模型是在教科书的第二章中开发的。在尝试详细理解这个例子之前,您应该先阅读那一章。
对于我们机器学习模型的第一个例子,我将构建一个简单的线性回归模型,该模型可以根据一些输入特征(如温度和风速)预测骑自行车的平均速度。
我有一条最喜欢的骑行路线,如下图所示。
每次我骑自行车的时候,我都会用GPS设备记录我的路线。随后,我将GPS文件上传到strava.com,这样我就可以保存赢博体育骑行的记录。
由于每次骑行的条件都不一样,我在这条路线上的平均速度在一年中会从14英里每小时的低到17英里每小时的高。在我们机器学习的第一个练习中,我将建立一个简单的模型,它可以预测路线的平均速度,作为各种因素的函数,这些因素可能在决定平均速度方面发挥作用。
由于我经常骑这条路线,所以我收集了足够的骑行数据,可以建立一个简单的数学模型。我有从2016年到2017年收集的50次自行车骑行的数据。这些数据足以开始构建一个简单的模型来预测我的平均速度。
建立数学模型的第一步是写下对模型输出有一定影响的特征列表。对于这个例子,我们试图预测骑自行车的平均速度。以下是一些可能影响结果的因素:
模型构建的一般规则是,具有更多输入特征的模型将比具有更少输入特征的模型需要更多的数据点。科学中常用的策略是控制实验:在控制实验中,我们修复尽可能多的特征,以努力减少我们必须处理的输入特征的数量。对于这个特殊的例子,我将尝试保留尽可能多的固定特征,以减少我们必须处理的输入数量。下面是我为减少这个问题的输入特征的数量所做的。
随着这些特征或多或少保持稳定,输入数据集现在由五个输入特征组成:
该模型的输入数据来自两个数据源。第一个数据源是从strava.com下载的GPX文件集合。这些文件包含了我在2016年和2017年每次骑自行车的GPS数据。每次骑行的GPS数据都是以一长串在骑行过程中获取的GPS坐标的形式呈现的。对于数据集中的每次骑行,该文件记录一个时间戳、纬度、经度和海拔(以米为单位),在骑行过程中每4秒记录一次。第二个数据源是一个电子表格,其中包含来自国家气象局的天气数据。该电子表格记录了从2016年初到2017年底,阿普尔顿机场每20分钟记录一次的大量天气数据。
任何机器学习项目的第一步都是数据整理。我们必须获取我们所拥有的原始输入数据,并将其重组为我们想要的特征的一组数据点。为了处理这部分任务,我编写了一个Python程序strava.py,它将聚合来自GPX文件和天气数据电子表格的数据。有关此Python程序如何工作的更多详细信息,请参阅Read Me文件和Python程序中的注释。
数据争用集的最终结果是一个CSV文件short_rides.csv,其中包含我们模型的输入数据。
由于在本例中,我们将更多地关注模型构建而不是数据争用,因此在此我不会详细注释Python程序中的代码。当我们准备为最终项目做一些进一步的机器学习项目时,我们可能会在本教程后面重新讨论这些代码。
数据集就绪后,我们就可以开始构建模型了。这个过程的全部细节可在Jupyter笔记本线性。Ipynb包含在下面的存档中。
循环模型的赢博体育文件都可以在此存档中获得。