官术网_书友最值得收藏!

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個。

主站蜘蛛池模板: 从江县| 修文县| 巴楚县| 邹城市| 荆门市| 容城县| 桐柏县| 连城县| 万载县| 凤山县| 青川县| 南京市| 莲花县| 弋阳县| 轮台县| 新建县| 交城县| 松原市| 富顺县| 林州市| 华宁县| 德昌县| 庆城县| 紫云| 太湖县| 江山市| 海兴县| 开江县| 大连市| 屯留县| 万全县| 陇川县| 黎平县| 睢宁县| 临潭县| 永丰县| 勐海县| 新竹县| 吴川市| 大城县| 民和|