Introduction
在對model進行訓練及評估時不能使用同樣的數據集
即便是同一數據集也需劃分成訓練集與測試集
- 訓練集與測試集的比例為75%:25% (仍可隨自己的需求自由劃分)
- 訓練集用於訓練構建模型
- 測試數據則用於模型檢驗使用,用於評估模型是否有效
- 學習階段可用的數據集:sklearn, kaggle, UCI
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
劃分
- 一般都選擇’all’在使用
datasets.clear_data_home(data_home=None)
清除目錄下的所有數據
數據集返回的類型
load* 和 fetch 返回的數據類型為*datasets.base.Bunch(字典格式)
- 可用字典的方式去查看屬性:
dict["key"] --> value
- 可用類屬性的方式(
.
)查看:class.property --> value
以下為數據集可調用的屬性:
- data: 返回特徵值array;是[n_samples x 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 : 隨機數Seed,不同的Seed會造成不同的隨機採樣結果。相同Seed採樣結果相同
- return : 訓練集特徵值(X_train)、測試集特徵值(X_test)、訓練集目標值(y_train)、測試集目標值(y_test)
Example
1 | from sklearn.datasets import load_iris |