sklearn快速入门教程 7.机器学习竞赛

sklearn快速入门教程


导言

机器学习竞赛是提高数据科学技能和衡量进步的好方法。

在下一个练习中,您将为Kaggle Learn用户创建并提交房价竞争预测

轮到你了

利用你在课程中学到的知识,创建一份提交给Kaggle竞赛的报告!

以下为练习部分


介绍

在本练习中,您将创建并提交Kaggle竞赛的预测。然后,您可以改进您的模型(例如,通过添加功能),以应用您学到的知识,并在排行榜上排名靠前。

# Set up code checking
from learntools.core import binder
binder.bind(globals())
from learntools.machine_learning.ex7 import *

# Set up filepaths
import os
if not os.path.exists("../input/train.csv"):
    os.symlink("../input/home-data-for-ml-course/train.csv", "../input/train.csv")  
    os.symlink("../input/home-data-for-ml-course/test.csv", "../input/test.csv") 
# Import helpful libraries
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import train_test_split

# Load the data, and separate the target
iowa_file_path = '../input/train.csv'
home_data = pd.read_csv(iowa_file_path)
y = home_data.SalePrice

# Create X (After completing the exercise, you can return to modify this line!)
features = ['LotArea', 'YearBuilt', '1stFlrSF', '2ndFlrSF', 'FullBath', 'BedroomAbvGr', 'TotRmsAbvGrd']

# Select columns corresponding to features, and preview the data
X = home_data[features]
X.head()

# Split into validation and training data
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)

# Define a random forest model
rf_model = RandomForestRegressor(random_state=1)
rf_model.fit(train_X, train_y)
rf_val_predictions = rf_model.predict(val_X)
rf_val_mae = mean_absolute_error(rf_val_predictions, val_y)

print("Validation MAE for Random Forest Model: {:,.0f}".format(rf_val_mae))

Validation MAE for Random Forest Model: 21,857

为比赛创建一个模型

上面的代码单元在X列和y列上训练一个随机森林模型。
使用下面的代码单元构建一个随机森林模型,并在所有X和y上对其进行训练。

# To improve accuracy, create a new Random Forest model which you will train on all training data
rf_model_on_full_data = ____

# fit rf_model_on_full_data on all data from the training data
____

现在,阅读“测试”数据文件,并应用模型进行预测。

# path to file you will use for predictions
test_data_path = '../input/test.csv'

# read test data file using pandas
test_data = ____

# create test_X which comes from test_data but includes only the columns you used for prediction.
# The list of columns is stored in a variable called features
test_X = ____

# make predictions which we will submit. 
test_preds = ____

提交前,请进行检查,确保您的测试pred的格式正确。

生成提交

运行下面的代码单元格,生成一个CSV文件,其中包含您的预测,可用于提交竞赛。

output = pd.DataFrame({'Id': test_data.Id,
                       'SalePrice': test_preds})
output.to_csv('submission.csv', index=False)

提交竞赛

为了测试你的成绩,你需要参加比赛(如果你还没有参加的话)。所以点击这个链接打开一个新窗口。然后点击“加入竞争”按钮。
接下来,按照以下说明操作:
首先单击窗口右上角的“保存版本”按钮。这将生成一个弹出窗口。
确保选择了“全部保存并运行”选项,然后单击“保存”按钮。
这将在笔记本的左下角生成一个窗口。完成运行后,单击“保存版本”按钮右侧的数字。这会在屏幕右侧显示一个版本列表。点击省略号(…)在最新版本的右侧,选择“在查看器中打开”。这将使您进入同一页面的查看模式。您需要向下滚动才能返回这些说明。
单击屏幕右侧的“输出”选项卡。然后,点击你想提交的文件,点击提交按钮,将结果提交到排行榜。
您现在已成功提交竞赛!

如果您想继续工作以提高性能,请选择屏幕右上角的编辑按钮。然后您可以更改代码并重复该过程。还有很大的改进空间,你将在工作中登上排行榜。

继续你的进步

有很多方法可以改进你的模型,在这一点上,实验是一个很好的学习方式。

改进模型的最佳方法是添加功能。要向数据中添加更多功能,请重新访问第一个代码单元,并将这行代码更改为包含更多列名:

features = ['LotArea', 'YearBuilt', '1stFlrSF', '2ndFlrSF', 'FullBath', 'BedroomAbvGr', 'TotRmsAbvGrd']

由于缺少值或非数字数据类型等问题,某些功能将导致错误。以下是您可能希望使用的、不会引发错误的潜在列的完整列表:

  • ‘MSSubClass’
  • ‘LotArea’
  • ‘OverallQual’
  • ‘OverallCond’
  • ‘YearBuilt’
  • ‘YearRemodAdd’
  • ‘1stFlrSF’
  • ‘2ndFlrSF’
  • ‘LowQualFinSF’
  • ‘GrLivArea’
  • ‘FullBath’
  • ‘HalfBath’
  • ‘BedroomAbvGr’
  • ‘KitchenAbvGr’
  • ‘TotRmsAbvGrd’
  • ‘Fireplaces’
  • ‘WoodDeckSF’
  • ‘OpenPorchSF’
  • ‘EnclosedPorch’
  • ‘3SsnPorch’
  • ‘ScreenPorch’
  • ‘PoolArea’
  • ‘MiscVal’
  • ‘MoSold’
  • ‘YrSold’

查看列列表,思考可能影响房价的因素。要了解这些功能的更多信息,请查看**[竞赛页面]上的数据说明(https://www.kaggle.com/c/home-data-for-ml-course/data)**.

更新上面定义功能的代码单元后,重新运行所有代码单元以评估模型并生成新的提交文件。

#接下来呢?

如上所述,如果您试图使用某些功能来训练模型,它们将抛出错误。中间机器学习本课程将教你如何处理这些类型的功能。您还将学习使用xgboost,这是一种比随机森林更精确的技术。

**熊猫**本课程将为您提供数据操作技能,使您能够在数据科学项目中快速从概念构思到实施。

你也为**[深度学习]做好了准备(https://kaggle.com/Learn/intro-to-Deep-Learning)**当然,你将在计算机视觉任务中建立比人类水平性能更好的模型。

练习答案

# In previous code cell
rf_model_on_full_data = RandomForestRegressor()
rf_model_on_full_data.fit(X, y)

# Then in last code cell
test_data_path = '../input/test.csv'
test_data = pd.read_csv(test_data_path)
test_X = test_data[features]
test_preds = rf_model_on_full_data.predict(test_X)


output = pd.DataFrame({'Id': test_data.Id,
                       'SalePrice': test_preds})
output.to_csv('submission.csv', index=False)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值