Hike News
Hike News

機器學習-數據集(dataset)

Introduction

在對model進行訓練及評估時不能使用同樣的數據集
即便是同一數據集也需劃分成訓練集與測試集

  • 訓練集與測試集的比例為75%:25% (仍可隨自己的需求自由劃分)
  • 訓練集用於訓練構建模型
  • 測試數據則用於模型檢驗使用,用於評估模型是否有效

sklearn數據集

sklearn.datasets

sklearn.datasets

加載此模塊獲取幾個流行的數據集

datasets.load_*()

  • *替換成數據集的名字
  • 獲取小規模數據集,數據包含在datasets裡

分類數據集

  • datasets.load_iris()
  • datasets.load_digits()

回歸數據集

  • datasets.load_boston():波士頓房價數據集
  • datasets.load_diabetes():糖尿病數據集

datasets.fetch_*(data_home=None)

  • *替換成數據集的名字
  • 獲取大規模數據集,需要從網路上下載
  • data_home參數表示數據集下載的目錄,預設是 ~/scikit_leaern_data/

datasets.fetch_20newgroups(data_home=None,subset=’train’)

  • 為一用於分類的大型數據集
  • 為一新聞數據集(文章),共有20個類別
  • subset: ‘train’ , ‘test’ , ‘all’ 可選 選擇要加載的數據集
    • 一般都選擇’all’在使用train_test_split劃分

datasets.clear_data_home(data_home=None)

清除目錄下的所有數據

數據集返回的類型

load* 和 fetch 返回的數據類型為*datasets.base.Bunch(字典格式)
以下為數據集可調用的屬性:

  • data: 返回特徵值array;是[n_samples*nfeatures]的二維numpy.ndarray陣列
  • target: 返回目標值array;是n_samples的一維numpy.ndarray陣列
  • DESCR: 數據描述
  • feature_names: 特徵名(新聞數據、手寫數字、回歸數據集沒有)
  • target_names: 目標名

數據集分割

  • 將數據集畫分成訓練集及測試集
  • 使用sklearn.model_selection.train_test_split

train_test_split( *arrays **options)

返回的為亂序的結果

  • X : 數據集的特徵值array
  • y : 數據集的目標值array
  • test_size : 測試集的大小,一般為float類型,表示百分比
  • random_state : 隨機數種子,不同的種子會造成不同的隨機採樣結果。相同種子採樣結果相同
  • return : 訓練集特徵值(X1)、測試集特徵值(X2)、訓練集目標值(y1)、測試集目標值(y2)

Example

1
2
3
4
5
6
7
8
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris_data = load_iris()
data = iris_data.data
target = iris_data.target

X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.25)