書名: Python機(jī)器學(xué)習(xí)(原書第3版)作者名: (美)塞巴斯蒂安·拉施卡 瓦希德·米爾賈利利本章字?jǐn)?shù): 1128字更新時(shí)間: 2021-06-11 16:13:46
4.3 把數(shù)據(jù)集劃分為獨(dú)立的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集
在第1章和第3章中,我們簡要地介紹了把數(shù)據(jù)集劃分成獨(dú)立的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的概念。記住,比較預(yù)測值與測試數(shù)據(jù)集的真值,可以理解為對模型所做的無偏置性能評估,然后再將其放到現(xiàn)實(shí)世界。本節(jié)將創(chuàng)建一個(gè)新數(shù)據(jù)集,即葡萄酒(Wine)數(shù)據(jù)集。在對數(shù)據(jù)集進(jìn)行預(yù)處理后,我們再進(jìn)一步探索用于數(shù)據(jù)集降維的不同特征選擇技術(shù)。
葡萄酒數(shù)據(jù)集是另一個(gè)開源數(shù)據(jù)集,讀者可以從UCI的機(jī)器學(xué)習(xí)資源庫(https://archive.ics.uci.edu/ml/datasets/Wine)獲得;該數(shù)據(jù)集包含了有13個(gè)特征的178個(gè)葡萄酒樣本,從不同角度對各個(gè)化學(xué)特性進(jìn)行了描述。
獲取葡萄酒數(shù)據(jù)集
讀者可以在本書的代碼包(https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data)中找到葡萄酒數(shù)據(jù)集(以及本書用到的其他數(shù)據(jù)集),以備在脫機(jī)工作或者UCI服務(wù)器暫時(shí)不可用時(shí)使用,如果要從本地目錄加載葡萄酒數(shù)據(jù)集,可以將下面這行

替換為:

可以直接用pandas庫從UCI的機(jī)器學(xué)習(xí)資源庫讀入開源的葡萄酒數(shù)據(jù)集:

表4-1中列出了葡萄酒數(shù)據(jù)集的13個(gè)特征,描述178個(gè)葡萄酒樣本的化學(xué)性質(zhì)。
表4-1 葡萄酒數(shù)據(jù)集的13個(gè)化學(xué)特征

這些樣本來自1
、2
和3
類葡萄酒,分別對應(yīng)意大利同一地區(qū)種植的三種不同品種的葡萄,如數(shù)據(jù)集摘要中所描述的那樣(https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.names)。
把數(shù)據(jù)集隨機(jī)劃分成獨(dú)立的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的一個(gè)便捷方法是,從scikit-learn的model_selection
子模塊調(diào)用train_test_split
函數(shù):

首先把NumPy數(shù)組的1~13特征列賦予變量X
;把第一列的分類標(biāo)簽賦予變量y
。調(diào)用train_test_split
函數(shù)把x
和y
隨機(jī)劃分成獨(dú)立的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。通過設(shè)置test_size = 0.3
,把30%的葡萄酒樣本分配給X_test
和y_test
,把余下70%的樣本分配給X_train
和y_train
。把分類標(biāo)簽數(shù)組y
作為參數(shù)提供給stratify
,確保訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集擁有與原始數(shù)據(jù)集相同的分類比例。
選擇劃分訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的合適比例
把數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的目的是要確保機(jī)器學(xué)習(xí)算法可以從中獲得有價(jià)值的信息。因此沒必要將太多信息分配給測試數(shù)據(jù)集。然而,測試數(shù)據(jù)集越小,泛化誤差的估計(jì)就越不準(zhǔn)確。將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集就是對兩者的平衡。在實(shí)踐中,根據(jù)初始數(shù)據(jù)集的規(guī)模,最常用的劃分比例為60:40、70:30或80:20。然而,對于大規(guī)模數(shù)據(jù)集,把訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的劃分比例定為90:10或99:1也是常見和適當(dāng)?shù)淖龇?。例如,如果?shù)據(jù)集包含超過100000個(gè)訓(xùn)練樣本,則可以僅保留10000個(gè)樣本進(jìn)行測試,以獲得對泛化性能的良好估計(jì)。更多的信息和圖示可以查閱我寫的“Model evaluation, model selection, and algorithm selection in machine learning”,該文章可從https://arxiv.org/pdf/1811.12808.pdf免費(fèi)獲得。
此外,在模型訓(xùn)練和評估后,通常不會(huì)丟棄分配的測試數(shù)據(jù)。普遍的做法是在整個(gè)數(shù)據(jù)集上保留一個(gè)分類器,以提高模型的預(yù)測性能。雖然我們通常推薦這種方法,但是它有可能會(huì)導(dǎo)致較差的泛化性能,例如當(dāng)數(shù)據(jù)集的規(guī)模很小而且測試數(shù)據(jù)集中包含異常值的時(shí)候。此外,在整個(gè)數(shù)據(jù)集上重新擬合模型后,我們將沒有任何獨(dú)立的數(shù)據(jù)來評估性能。
- 計(jì)算思維與算法入門
- Spring Cloud Alibaba核心技術(shù)與實(shí)戰(zhàn)案例
- 測試驅(qū)動(dòng)開發(fā):入門、實(shí)戰(zhàn)與進(jìn)階
- 自己動(dòng)手實(shí)現(xiàn)Lua:虛擬機(jī)、編譯器和標(biāo)準(zhǔn)庫
- .NET 4.0面向?qū)ο缶幊搪劊夯A(chǔ)篇
- 數(shù)據(jù)結(jié)構(gòu)(C語言)
- GameMaker Programming By Example
- Python數(shù)據(jù)可視化之Matplotlib與Pyecharts實(shí)戰(zhàn)
- Windows Phone 7.5:Building Location-aware Applications
- 從零開始學(xué)Linux編程
- Mastering C++ Multithreading
- ExtJS Web應(yīng)用程序開發(fā)指南第2版
- 機(jī)器學(xué)習(xí)微積分一本通(Python版)
- 從Power BI到Analysis Services:企業(yè)級數(shù)據(jù)分析實(shí)戰(zhàn)
- LabVIEW數(shù)據(jù)采集(第2版)