介绍
当将机器学习应用于真实世界的数据时,这个过程涉及到很多步骤——从收集数据开始,到生成预测(我们使用机器学习的七个步骤,正如郭玉峰在这里所定义的。)
一切从第一步开始:收集数据。在业界,在构建数据集时需要考虑一些重要的因素,例如目标泄漏。当你参加kaggle比赛时,这一步已经为你完成了。
在机器学习简介和中级机器学习课程中,您可以学习如何:
第2步:准备数据-处理缺失值和分类数据(特色工程将在单独的课程中介绍。)
第4步:将模型拟合决策树和随机林训练成训练数据中的模式。
第5步:评估模型-使用验证集评估经过训练的模型在看不见的数据上的表现。
第6步:调整参数-调整参数以从XGBoost模型获得更好的性能。
第7步:获得预测-生成一个训练有素的模型预测,并提交你的结果,以卡格尔竞争。
剩下第3步:选择一个模型。有很多不同类型的模型。你应该为你的问题选择哪一个?当你刚刚开始的时候,最好的选择就是尝试一切,建立自己的直觉——没有任何普遍接受的规则。还有许多有用的Kaggle笔记本(就像这个),你可以看到其他kaggler如何以及何时使用不同的模型。
掌握机器学习过程需要大量的时间和实践。当您还在学习时,您可以使用自动机器学习(AutoML)工具来生成智能预测。
自动机器学习(AutoML)
在本笔记本中,您将学习如何使用googlecloud AutoML表来自动化机器学习过程。虽然Kaggle已经负责数据收集,但AutoML表将负责所有剩余的步骤。
AutoML表是一种付费服务。在本教程后面的练习中,我们将向您展示如何申请300美元的免费积分,您可以使用这些积分来训练自己的模型!
代码
我们将使用纽约市出租车运价预测比赛的数据。在本次比赛中,我们希望您根据接送地点、乘客人数以及接送日期和时间,预测纽约市出租车的票价(包括过路费)。
为此,我们将使用一个调用AutoML表的Python类。要使用此代码,只需定义以下变量:
PROJECT_ID-您的Google云项目的名称。在googlecloud中,所有的工作都是以“项目”的形式组织的。
BUCKET_NAME-您的Google云存储BUCKET的名称。为了使用AutoML,我们需要创建一个存储桶,在那里上传Kaggle数据集。
DATASET_NAME-数据集的名称。
TRAIN_FILEPATH-来自比赛的训练数据(TRAIN.csv文件)的文件路径。
TEST_FILEPATH-来自竞争对手的测试数据(TEST.csv文件)的文件路径。
TARGET_COLUMN—训练数据中包含要预测的值的列的名称。
ID_COLUMN—包含ID的列的名称。
MODEL_DISPLAY_NAME-模型的名称。
TRAIN_BUDGET-你希望你的模型训练多长时间(1小时用1000,2小时用2000,以此类推)。
当您在下面的练习中运行自己的代码时,所有这些变量都会更有意义!
# 仅保存前200万行的CSV文件
import pandas as pd
train_df = pd.read_csv("../input/new-york-city-taxi-fare-prediction/train.csv", nrows = 2_000_000)
train_df.to_csv("train_small.csv", index=False)
PROJECT_ID = 'kaggle-playground-170215'
BUCKET_NAME = 'automl-tutorial-alexis'
DATASET_DISPLAY_NAME = 'taxi_fare_dataset'
TRAIN_FILEPATH = "../working/train_small.csv"
TEST_FILEPATH = "../input/new-york-city-taxi-fare-prediction/test.csv"
TARGET_COLUMN = 'fare_amount'
ID_COLUMN = 'key'
MODEL_DISPLAY_NAME = 'tutorial_model'
TRAIN_BUDGET = 4000
# 导入定义包装器的类
from automl_tables_wrapper import AutoMLTablesWrapper
# 创建包装器实例
amw = AutoMLTablesWrapper(project_id=PROJECT_ID,
bucket_name=BUCKET_NAME,
dataset_display_name=DATASET_DISPLAY_NAME,
train_filepath=TRAIN_FILEPATH,
test_filepath=TEST_FILEPATH,
target_column=TARGET_COLUMN,
id_column=ID_COLUMN,
model_display_name=MODEL_DISPLAY_NAME,
train_budget=TRAIN_BUDGET)
接下来,我们训练一个模型并使用它在测试数据集上生成预测。
# 创建和培训模型
amw.train_model()
# 获取预测
amw.get_predictions()
完成这些步骤后,我们有一个文件,我们可以提交给竞争!在下面的代码单元中,我们加载这个提交文件并查看前几行。
submission_df = pd.read_csv("../working/submission.csv")
submission_df.head()
它的表现如何?嗯,比赛提供了一个入门笔记本与一个简单的线性模型,预测票价数额之间的距离为基础的接送地点。这种方法的表现优于笔记本,而且它的排名也超过了大约一半的参赛作品。