Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
d1f0febf
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d1f0febf
编写于
8月 21, 2018
作者:
M
muli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update price
上级
45d70d3c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
52 addition
and
22 deletion
+52
-22
chapter_deep-learning-basics/kaggle-house-price.md
chapter_deep-learning-basics/kaggle-house-price.md
+52
-22
未找到文件。
chapter_deep-learning-basics/kaggle-house-price.md
浏览文件 @
d1f0febf
# 实战Kaggle比赛:房价预测
作为深度学习基础篇章的总结,我们将对本章内容学以致用。下面,让我们动手实战一个Kaggle比赛:房价预测。
在这个房价预测比赛中,我们还将以
`pandas`
为工具,介绍如何对真实世界中的数据进行重要的预处理,例如:
*
处理离散数据;
*
处理丢失的数据特征;
*
对数据进行标准化。
需要注意的是,本节中对于数据的预处理、模型的设计和超参数的选择等,我们特意只提供最基础的版本。我们希望大家通过动手实战、仔细观察实验现象、认真分析实验结果并不断调整方法,从而得到令自己满意的结果。
作为深度学习基础篇章的总结,我们将对本章内容学以致用。下面,让我们动手实战一个Kaggle比赛:房价预测。本节将提供简单的数据的预处理、模型的设计和超参数的选择。我们希望你通过动手实战、仔细观察实验现象、认真分析实验结果并不断调整方法,从而得到令自己满意的结果。
## Kaggle比赛
Kaggle(网站地址:https://www.kaggle.com )是一个著名的供机器学习爱好者交流的平台。图3.
7展示了Kaggle网站首页。为了便于提交结果,请大家
注册Kaggle账号。
Kaggle(网站地址:https://www.kaggle.com )是一个著名的供机器学习爱好者交流的平台。图3.
8展示了Kaggle网站首页。为了便于提交结果,请
注册Kaggle账号。
![
Kaggle网站首页。
](
../img/kaggle.png
)
...
...
@@ -24,19 +13,19 @@ Kaggle(网站地址:https://www.kaggle.com )是一个著名的供机器学
> https://www.kaggle.com/c/house-prices-advanced-regression-techniques
图3.
8
展示了房价预测比赛的网页信息。
图3.
9
展示了房价预测比赛的网页信息。
![
房价预测比赛的网页信息。比赛数据集可通过点击“Data”标签获取。
](
../img/house_pricing.png
)
## 获取和读取数据集
比赛数据分为训练数据集和测试数据集。两个数据集都包括每栋房子的特征,例如街道类型、建造年份、房顶类型、地下室状况等特征值。这些特征值有连续的数字、离散的标签甚至是缺失值“na”。只有训练数据集包括了每栋房子的价格。我们可以访问比赛网页,点击图3.
8
中的“Data”标签,并下载这些数据集。
比赛数据分为训练数据集和测试数据集。两个数据集都包括每栋房子的特征,例如街道类型、建造年份、房顶类型、地下室状况等特征值。这些特征值有连续的数字、离散的标签甚至是缺失值“na”。只有训练数据集包括了每栋房子的价格。我们可以访问比赛网页,点击图3.
9
中的“Data”标签,并下载这些数据集。
下面,我们通过使用
`pandas`
读入数据
。请确保已安装
`pandas`
(命令行执行
`pip install pandas`
)
。
下面,我们通过使用
`pandas`
读入数据
,请简单介绍如何处理离散数据、处理丢失的数据特征和对数据进行标准化。在导入本节需要的包前请确保已安装
`pandas`
,否则请参考下面代码注释
。
```
{.python .input n=1}
```
{.python .input n=3}
# 如果没有安装pandas,请反注释下面一行。
# !pip install pandas
import sys
sys.path.insert(0, '..')
...
...
@@ -46,25 +35,66 @@ from mxnet import autograd, init, gluon, nd
from mxnet.gluon import data as gdata, loss as gloss, nn
import numpy as np
import pandas as pd
```
数据解压放在
`../data`
目录里,它包括两个csv文件。下面使用pands读取着这两个文件
```
{.python .input n=14}
train_data = pd.read_csv('../data/kaggle_house_pred_train.csv')
test_data = pd.read_csv('../data/kaggle_house_pred_test.csv')
all_features = pd.concat((train_data.loc[:, 'MSSubClass':'SaleCondition'],
test_data.loc[:, 'MSSubClass':'SaleCondition']))
```
训练数据集包括1460个样本、80个特征和1个标签。
```
{.python .input n=
4
}
```
{.python .input n=
11
}
train_data.shape
```
```
{.json .output n=11}
[
{
"data": {
"text/plain": "(1460, 81)"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
]
```
测试数据集包括1459个样本和80个特征。我们需要预测测试数据集上每个样本的标签。
```
{.python .input n=5}
test_data.shape
```
让我们来前4个样本的前4个特征和最后的标签:
```
{.python .input n=28}
train_data.iloc[0:4, [0,1,2,3,4,-1]]
```
```
{.json .output n=28}
[
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Id</th>\n <th>MSSubClass</th>\n <th>MSZoning</th>\n <th>LotFrontage</th>\n <th>LotArea</th>\n <th>SalePrice</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>60</td>\n <td>RL</td>\n <td>65.0</td>\n <td>8450</td>\n <td>208500</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>20</td>\n <td>RL</td>\n <td>80.0</td>\n <td>9600</td>\n <td>181500</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>60</td>\n <td>RL</td>\n <td>68.0</td>\n <td>11250</td>\n <td>223500</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>70</td>\n <td>RL</td>\n <td>60.0</td>\n <td>9550</td>\n <td>140000</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " Id MSSubClass MSZoning LotFrontage LotArea SalePrice\n0 1 60 RL 65.0 8450 208500\n1 2 20 RL 80.0 9600 181500\n2 3 60 RL 68.0 11250 223500\n3 4 70 RL 60.0 9550 140000"
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
]
```
我们将训练数据的前80维特征和测试数据放在一起,可以得到整个数据的特征。
```
{.python .input n=30}
all_features = pd.concat((train_data.iloc[:, :-1], test_data))
```
## 预处理数据
我们对连续数值的特征做标准化处理。如果一个特征的值是连续的,设该特征在训练数据集和测试数据集上的均值为$
\m
u$,标准差为$
\s
igma$。那么,我们可以将该特征的每个值先减去$
\m
u$再除以$
\s
igma$得到标准化后的每个特征值。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录