一、概述

书中3.16节扩展一下可以作为kaggle比赛的框架,这个赛题的名字是House Prices: Advanced Regression Techniques,是一个Regression问题。

二、Deeplearning的一般流程

结合李航《统计学习方法》中对机器学习流程的总结,分为data、model、strategy、algorithm、training、prediction

1、 Data

1.1、read data

# read data
train_data = pd.read_csv('./d2l-zh-1.1/data/kaggle_house_pred_train.csv')
test_data = pd.read_csv('./d2l-zh-1.1/data/kaggle_house_pred_test.csv')
# print(train_data.shape)
# print(train_data.iloc[0:4, [0, 1, 2, -1, -2, -3]])

1.2、preprocess data

# standardization to numeric type
all_features = pd.concat((train_data.iloc[:, 1:-1], test_data.iloc[:, 1:]))
numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index
all_features[numeric_features] = all_features[numeric_features].apply(lambda x: (x - x.mean()) / x.std())
# 标准化后,每个特征的均值变为0,所以可以直接用0来替换缺失值
all_features[numeric_features] = all_features[numeric_features].fillna(0)# convert discrete value to dummy variable
all_features = pd.get_dummies(all_features, dummy_na=True)# get train and test data
n_train = train_data.shape[0]
train_features = nd.array(all_features[:n_train].values)
test_features = nd.array(all_features[n_train:].values)
train_labels = nd.array(train_data['SalePrice'].values).reshape((-1, 1))

1.3、get_k_fold_data

# k folds validation
def get_k_fold_data(k, i, X, y):assert k > 1fold_size = X.shape[0] // kX_train, y_train, X_valid, y_valid = None, None, None, Nonefor j in range(k):idx = slice(j * fold_size, (j + 1) * fold_size)X_part, y_part = X[idx, :], y[idx]if j == i:X_valid, y_valid = X_part, y_partelif X_train is None:X_train, y_train = X_part, y_partelse:X_train = nd.concat(X_train, X_part, dim=0)y_train = nd.concat(y_train, y_part, dim=0)return X_train, y_train, X_valid, y_valid

2、Model

def get_net():net = nn.Sequential()net.add(nn.Dense(256, activation='relu'),nn.Dropout(0.5),nn.Dense(1))net.initialize()return net

3、Strategy

loss = gloss.L2Loss()

4、Algorithm

# loss = gloss.L2Loss()

5、Training

# training
def train(net, train_iter, train_features, train_labels, test_features, test_labels,loss, num_epochs, trainer, batch_size):train_ls, test_ls = [], []for epoch in range(num_epochs):for X, y in train_iter:with autograd.record():l = loss(net(X), y)l.backward()trainer.step(batch_size)train_ls.append(log_rmse(net, train_features, train_labels))if test_labels is not None:test_ls.append(log_rmse(net, test_features, test_labels))return train_ls, test_ls

6、Validation

def k_fold(k, X_train, y_train, num_epochs, learning_rate, weight_decay, batch_size):train_l_sum, valid_l_sum = 0.0, 0.0for i in range(k):# datadata = get_k_fold_data(k, i, X_train, y_train)train_features, train_labels, _, _ = datatrain_iter = gdata.DataLoader(gdata.ArrayDataset(train_features, train_labels), batch_size, shuffle=True)# modelnet = get_net()# strategyloss = gloss.L2Loss()# algorithmtrainer = gluon.Trainer(net.collect_params(), 'adam',{'learning_rate': learning_rate, 'wd': weight_decay})# trainingtrain_ls, valid_ls = train(net, train_iter, *data, loss, num_epochs, trainer, batch_size)train_l_sum += train_ls[-1]valid_l_sum += valid_ls[-1]if i == 0:d2l.semilogy(range(1, num_epochs + 1), train_ls, 'epochs', 'rmse',range(1, num_epochs + 1), valid_ls, ['train', 'valid'])print('fold %d, train rmse %f, valid rmse %f' % (i, train_ls[-1], valid_ls[-1]))return train_l_sum / k, valid_l_sum / k# model selection
k, num_epochs, lr, weight_decay, batch_size = 5, 500, 0.01, 512, 64
train_l, valid_l = k_fold(k, train_features, train_labels, num_epochs, lr,weight_decay, batch_size)
print('%d-fold validation: avg train rmse %f, avg valid rmse %f' % (k, train_l, valid_l))

7、Prediction

train_and_pred(train_features, test_features, train_labels, test_data,num_epochs, lr, weight_decay, batch_size)

基于mxnet的Regression问题Kaggle比赛代码框架相关推荐

  1. 美国纽约市出租车大数据探索-基于kaggle比赛

    1.背景介绍 出租车多按里程或时间收费,但进入21世纪,电话预约叫车量逐年增加.每天早晚高峰.雨雪等恶劣天气以及长假的某些时段,各大出租汽车调度中心的预约叫车业务供不应求.随着出租车业务的不断提升,相 ...

  2. 【Python学习系列十六】基于scikit-learn库逻辑回归训练模型(delta比赛代码)

    delta比赛的场景:给定数据样本,设计模型训练预测二分类结果,并通过f1-score评估结果.比赛中对特征抽取.样本扰动.过拟合.强相关特征.归一化等概念有实际的理解和应用. 这里给出的代码是基于逻 ...

  3. 李沐动手学深度学习V2-实战Kaggle比赛:狗的品种识别(ImageNet Dogs)和代码实现

    一. 实战Kaggle比赛:狗的品种识别(ImageNet Dogs) 1. 介绍 在这场比赛中,将识别120类不同品种的狗,这个数据集是ImageNet的数据集子集,与 CIFAR-10数据集中的图 ...

  4. 【记第一次kaggle比赛】PetFinder.my - Pawpularity Contest 宠物预测

    目录 前言 一.数据介绍 二.我的探索 2.1.基于Classification Head的方案 2.1.1.删除重复数据(打分差别很大) 2.1.2.数据增强 2.1.3.损失函数 2.1.4.优化 ...

  5. Kaggle比赛模型融合方法

    介绍 集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术.在这篇文章中,我会分享我在Kaggle比赛中的集成方法. 在第一部分中,我们会讨论从提交文件中建立集成.主要包括: 投票集成 平均 ...

  6. 通俗理解kaggle比赛大杀器xgboost

    通俗理解kaggle比赛大杀器xgboost 说明:若出现部分图片无法正常显示而影响阅读,请以此处的文章为准:xgboost 题库版. 时间:二零一九年三月二十五日. 0 前言 xgboost一直在竞 ...

  7. kaggle比赛流程(转)

    kaggle比赛流程(转) 一.比赛概述 不同比赛有不同的任务,分类.回归.推荐.排序等.比赛开始后训练集和测试集就会开放下载. 比赛通常持续 2 ~ 3 个月,每个队伍每天可以提交的次数有限,通常为 ...

  8. 简单介绍一些关于 Kaggle 比赛的知识

    简单介绍一些关于 Kaggle 比赛的知识 转自: https://www.zhihu.com/question/23987009/answer/29371981 作者:匿名用户 链接:https:/ ...

  9. kaggle比赛集成指南

    转自 介绍 集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术.在这篇文章中,我会分享我在Kaggle比赛中的集成方法. 在第一部分中,我们会讨论从提交文件中建立集成.主要包括: 投票集成 ...

最新文章

  1. 全国计算机等级考试成绩查询陕西,陕西计算机等级考试成绩查询入口
  2. 《一个操作系统的实现》读书笔记连载ing……
  3. makefile的命令包定义及使用
  4. 【CyberSecurityLearning 57】XSS
  5. matlab FAQ
  6. iOS8开发~UI布局(三)深入理解autolayout
  7. php测试代码执行时间,php debug记录程序执行时间和执行情况
  8. Eigen(6)快操作
  9. Silverlig“.NET研究”ht性能优化纪要
  10. 昨夜,拼多多发布财报后,大家只看到了用户达到7.31亿
  11. Best Coder Round#25 1003 树的非递归访问
  12. Android开发之桌面快捷键使用细则(原创)
  13. Emoji表情代码大全
  14. PMP-项目风险管理
  15. nginx的带宽限制和并发控制
  16. 使用videojs播放m3u8视频
  17. 解决Request header field XXX is not allowed by access-control-allow-headers in preflight response
  18. Blinker+小爱同学+四路继电器+(RFID+舵机模拟开门)代码
  19. 利用Cesium加载 M3D BIM 模型
  20. 人体中数量最多的神经元,人体内有多少个神经元

热门文章

  1. 前端学习(1416):ajax的运行原理
  2. 前端学习(1170):findIndex
  3. 前端学习(586):在元素中动态添加类与伪类
  4. java学习(155):序列化
  5. 实例36:python
  6. 程序根据手机机型设置自定义底部导航距离
  7. 非类型模板参数(参考《C++ Templates 英文版第二版》)
  8. python两列数据生成邻接矩阵_用python实现邻接矩阵转换为邻接表,python语言实现...
  9. 【SR汇总】基于深度学习方法
  10. 2018ACM/ICPC亚洲区域赛(焦作)F. Honeycomb