- 深入淺出Python機器學習
- 段小手
- 934字
- 2022-07-29 15:23:18
3.3.2 生成訓練數據集和測試數據集
在我們創建一個能夠自動將酒進行分類的機器學習的算法模型之前,先要能夠對模型的可信度進行評判,否則我們無法知道它對于新的酒所進行的分類是否準確。那么問題來了,如果我們用生成模型的數據去評估算法模型,那得分肯定是滿分,這就好像我們按照一個體重75kg的人的身材數據縫制了一件衣服,那么這件衣服對于這個人肯定是百分之一百合身的,但如果換了一個體重85kg的人,這件衣服就不一定合適了。
所以我們現在要做的工作是,把數據集分為兩個部分:一部分稱為訓練數據集;另一部分稱為測試數據集。訓練數據集就好比我們縫制衣服時所用到的模特的身材,而測試數據集則是用來測試這件衣服,對于別人來說究竟有多合身的模特。
在scikit-learn中,有一個train_test_split函數,它是用來幫助用戶把數據集拆分的工具。其工作原理是:train_test_split函數將數據集進行隨機排列,在默認情況下將其中75%的數據及所對應的標簽劃歸到訓練數據集,并將其余25%的數據和所對應的標簽劃歸到測試數據集。
注意 我們一般用大寫的X表示數據的特征,而用小寫的y表示數據對應的標簽。這是因為X是一個二維數組,也稱為矩陣;而y是一個一維數組,或者說是一個向量。
接下來,我們使用train_test_split函數將酒的數據集中的數據分為訓練數據集和測試數據集。在Jupyter Notebook中輸入代碼如下:
#導入數據集拆分工具 from sklearn.model_selection import train_test_split #將數據集拆分為訓練數據集和測試數據集 X_train, X_test, y_train, y_test = train_test_split( wine_dataset['data'], wine_dataset['target'], random_state=0)
此時,我們已經對酒數據集完成了拆分。在上述代碼中,我們看到了一個參數稱為random_state,并且我們將它指定為0。這是因為train_test_split函數會生成一個偽隨機數,并根據這個偽隨機數對數據集進行拆分。而我們有時候需要在一個項目中,讓多次生成的偽隨機數相同,方法就是通過固定random_state參數的數值,相同的random_state參數會一直生成同樣的偽隨機數,但當這個值我們設為0,或者保持缺省的時候,則每次生成的偽隨機數均不同。
下面我們看一看train_test_split函數拆分后的數據集大概是什么情況,在Jupyter Notebook中輸入代碼如下:

運行代碼,得到結果如圖3-19所示。

圖3-19 經過拆分的訓練集與測試集的數據形態
【結果分析】此刻我們可以看到在訓練數據集中,樣本X數量和其對應的標簽y數量均為133個,約占樣本總量的74.7%,而測試數據集中的樣本X數量和標簽y數量均為45個,約占樣本總數的25.3%。同時,不論是在訓練數據集中,還是在測試數據集中,特征變量都是13個。
- MySQL數據庫管理實戰
- Django+Vue.js商城項目實戰
- GitLab Cookbook
- PyQt從入門到精通
- MongoDB權威指南(第3版)
- NetBeans IDE 8 Cookbook
- Scala Data Analysis Cookbook
- Manage Your SAP Projects with SAP Activate
- Hands-On ROS for Robotics Programming
- 數據庫技術及應用教程上機指導與習題(第2版)
- Instant AppFog
- Puppet Cookbook(Third Edition)
- BackTrack 5 Cookbook
- Learning Yeoman
- Ionic Framework By Example