現(xiàn)在我們已經(jīng)介紹了一些用于構(gòu)建和訓(xùn)練深度網(wǎng)絡(luò)并使用包括權(quán)重衰減和丟失在內(nèi)的技術(shù)對其進(jìn)行正則化的基本工具,我們準(zhǔn)備通過參加 Kaggle 競賽將所有這些知識付諸實(shí)踐。房價預(yù)測競賽是一個很好的起點(diǎn)。數(shù)據(jù)相當(dāng)通用,沒有表現(xiàn)出可能需要專門模型(如音頻或視頻可能)的奇異結(jié)構(gòu)。該數(shù)據(jù)集由 De Cock ( 2011 )收集,涵蓋 2006 年至 2010 年愛荷華州埃姆斯的房價。 它比Harrison 和 Rubinfeld (1978)著名的波士頓住房數(shù)據(jù)集大得多,擁有更多的例子和更多的特征。
在本節(jié)中,我們將帶您了解數(shù)據(jù)預(yù)處理、模型設(shè)計和超參數(shù)選擇的詳細(xì)信息。我們希望通過實(shí)踐方法,您將獲得一些直覺,這些直覺將指導(dǎo)您作為數(shù)據(jù)科學(xué)家的職業(yè)生涯。
5.7.1. 下載數(shù)據(jù)
在整本書中,我們將在各種下載的數(shù)據(jù)集上訓(xùn)練和測試模型。在這里,我們實(shí)現(xiàn)了兩個實(shí)用函數(shù)來下載文件和提取 zip 或 tar 文件。同樣,我們將它們的實(shí)現(xiàn)推遲到 第 23.7 節(jié)。
def download(url, folder, sha1_hash=None):
"""Download a file to folder and return the local filepath."""
def extract(filename, folder):
"""Extract a zip/tar file into folder."""
5.7.2. 格格
Kaggle是一個舉辦機(jī)器學(xué)習(xí)競賽的流行平臺。每場比賽都以數(shù)據(jù)集為中心,許多比賽由利益相關(guān)者贊助,他們?yōu)楂@勝的解決方案提供獎勵。該平臺幫助用戶通過論壇和共享代碼進(jìn)行交互,促進(jìn)協(xié)作和競爭。雖然排行榜追逐經(jīng)常失控,研究人員短視地關(guān)注預(yù)處理步驟而不是提出基本問題,但平臺的客觀性也具有巨大價值,該平臺有助于競爭方法之間的直接定量比較以及代碼共享,以便每個人都可以了解哪些有效,哪些無效。如果你想?yún)⒓?Kaggle 比賽,你首先需要注冊一個賬號(見圖 5.7.1)。
在房價預(yù)測比賽頁面,如圖 5.7.2所示,可以找到數(shù)據(jù)集(在“數(shù)據(jù)”選項卡下),提交預(yù)測,就可以看到你的排名,網(wǎng)址在這里:
5.7.3. 訪問和讀取數(shù)據(jù)集
請注意,比賽數(shù)據(jù)分為訓(xùn)練集和測試集。每條記錄包括房屋的屬性值和街道類型、建造年份、屋頂類型、地下室狀況等屬性。特征由各種數(shù)據(jù)類型組成。例如,建造年份用整數(shù)表示,屋頂類型用離散的分類分配表示,其他特征用浮點(diǎn)數(shù)表示。這就是現(xiàn)實(shí)使事情復(fù)雜化的地方:例如,一些數(shù)據(jù)完全缺失,缺失值簡單地標(biāo)記為“na”。每個房子的價格僅包含在訓(xùn)練集中(畢竟這是一場比賽)。我們希望對訓(xùn)練集進(jìn)行分區(qū)以創(chuàng)建驗(yàn)證集,但我們只能在將預(yù)測上傳到 Kaggle 后才能在官方測試集上評估我們的模型。圖 5.7.2有下載數(shù)據(jù)的鏈接。
首先,我們將pandas
使用我們在第 2.2 節(jié)中介紹的方法讀入和處理數(shù)據(jù)。為了方便起見,我們可以下載并緩存 Kaggle 住房數(shù)據(jù)集。如果與此數(shù)據(jù)集對應(yīng)的文件已存在于緩存目錄中并且其 SHA-1 匹配sha1_hash
,我們的代碼將使用緩存文件以避免因冗余下載而阻塞您的互聯(lián)網(wǎng)。
class KaggleHouse(d2l.DataModule):
def __init__(self, batch_size, train=None, val=None):
super().__init__()
self.save_hyperparameters()
if self.train is None:
self.raw_train = pd.read_csv(d2l.download(
d2l.DATA_URL + 'kaggle_house_pred_train.csv', self.root,
sha1_hash='585e9cc93e70b39160e7921475f9bcd7d31219ce'))
self.raw_val = pd.read_csv(d2l.download(
d2l.DATA_URL + 'kaggle_house_pred_test.csv', self.root,
sha1_hash='fa19780a7b011d9b009e8bff8e99922a8ee2eb90'))
訓(xùn)練數(shù)據(jù)集包含 1460 個示例、80 個特征和 1 個標(biāo)簽,而驗(yàn)證數(shù)據(jù)包含 1459 個示例和 80 個特征。
Downloading ../data/kaggle_house_pred_train.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_train.csv...
Downloading ../data/kaggle_house_pred_test.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_test.csv...
(1460, 81)
(1459, 80)
Downloading ../data/kaggle_house_pred_train.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_train.csv...
Downloading ../data/kaggle_house_pred_test.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_test.csv...
(1460, 81)
(1459, 80)
Downloading ../data/kaggle_house_pred_train.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_train.csv...
Downloading ../data/kaggle_house_pred_test.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_test.csv...
(1460, 81)
(1459, 80)
Downloading ../data/kaggle_house_pred_train.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_train.csv...
Downloading ../data/kaggle_house_pred_test.csv from http://d2l-data.s3-accelerate.amazonaws.com/kaggle_house_pred_test.csv...
(1460, 81)
(1459, 80)
5.7.4. 數(shù)據(jù)預(yù)處理
我們來看看前四個和最后兩個特征以及前四個示例中的標(biāo)簽 (SalePrice)。
Id MSSubClass MSZoning LotFrontage SaleType SaleCondition SalePrice
0 1 60 RL 65.0 WD Normal 208500
1 2 20 RL 80.0 WD Normal 181500
2 3 60 RL 68.0 WD Normal 223500
3 4 70 RL 60.0 WD Abnorml 140000
Id MSSubClass MSZoning LotFrontage SaleType SaleCondition SalePrice
0 1 60 RL 65.0 WD Normal 208500
1 2 20 RL 80.0 WD Normal 181500
2 3 60 RL 68.0 WD Normal 223500
3 4 70 RL 60.0 WD Abnorml 140000
評論
查看更多