訓練資料和測試資料之間的區別


介紹

在機器學習中,如果我們擁有良好的資料表示和數量,就可以生成良好的模型。在訓練模型時,資料可以被劃分為不同的資料集,這些資料集具有不同的用途。訓練集和測試集是兩個非常有用且常見的資料集。訓練集是原始資料集的一部分,用於訓練模型並找到良好的擬合。測試資料是原始資料的一部分,用於驗證模型訓練並分析計算的指標。

在本文中,讓我們詳細探討訓練集和測試資料集。

訓練資料 測試資料
提供給機器學習模型的資料,以便它可以透過分析資料來學習其中的模式,稱為訓練資料集。 用於評估模型並檢查其效能的資料稱為測試資料。
它通常大於建立的其他任何資料集。訓練資料集的大小大於測試資料集。訓練集和測試集之間常用的比例為 80:20、70:30 等 它通常以 80:20 或 70:30 等比例獲取,較小的比例代表測試資料。
資料量越大,模型可用的資訊就越多。但是,應注意不要用所有資料來訓練模型,這可能導致過擬合。 用於測試的資料應該是完全未見過的,以便模型獲得新資料來檢查效能。
用於訓練的資料可以有標籤也可以沒有標籤。這取決於任務的型別。如果是像 KMeans 這樣的無監督演算法,則不需要標籤,但如果是像查詢電子郵件是否為垃圾郵件這樣的分類任務,則需要帶標籤的訓練資料。 測試資料可以根據任務型別新增或不新增標籤。
資料應該與正在解決的用例或問題相關。例如,要確定房價,則與房屋位置、面積等相關的資料與訓練相關。 資料應該代表原始資料,如訓練資料集中所示,並且在特徵上不應完全偏離。
訓練資料應該更大,以便模型能夠很好地擬合,並且不會由於資料不足而導致欠擬合。 資料集應該足夠大,以便演算法/模型能夠做出更好的預測並在指標上顯示一些相關結果。
例如,假設一個可以預測公司未來銷售額的預測模型。為了構建和學習此模型,它需要過去的歷史資料。這作為訓練資料提供。 對於相同的預測模型,可以將一部分歷史資料用於測試。

程式碼實現

讓我們看看將資料集拆分為訓練集和測試集的實現,並分析其一些特徵。

資料集 CSV
import pandas as pd
from sklearn.model_selection import train_test_split

data = pd.read_csv('/content/train_test.csv')

X_data = data.iloc[:, :-1]
y_data = data.iloc[:, -1]

X_train, X_test, y_train, y_test = train_test_split(
    X_data, y_data, test_size=0.3)

print("X Train shape : ",X_train.shape)
print("y Train shape : ",y_train.shape)
print("X Test shape : ",X_test.shape)
print("y Test shape : ",y_train.shape)

輸出

X Train shape :  (289, 7)
y Train shape :  (289,)
X Test shape :  (125, 7)
y Test shape :  (289,)

從上述實現中,我們已將原始資料集以 70:30 的比例拆分為訓練集和測試集。資料集通常有 7 個特徵列。Scikit learn 的 train_test_split 函式是一個方便且有用的工具,可以將任何資料集拆分為訓練集和測試集。

結論

訓練集和測試集都是原始資料的一部分。訓練集用於訓練模型,測試資料用於訓練後的模型預測和評估模型在未見資料上的效能。訓練集通常大於測試集,但兩個資料集都應相關且來自同一來源,並具有相似的特徵。

更新於: 2023年9月22日

5K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告