機器學習實踐(二)—sklearn之資料集
阿新 • • 發佈:2018-11-25
一、可用資料集
- Kaggle網址:https://www.kaggle.com/datasets
- UCI資料集網址: http://archive.ics.uci.edu/ml/
- scikit-learn網址:http://scikit-learn.org/stable/datasets/index.html
各資料集優點
sk 資料量小,方便學習
uci 資料真實,全面
ka 競賽平臺,資料集真實
二、Scikit-learn
1. 介紹
- Python語言的機器學習工具
- Scikit-learn包括許多知名的機器學習演算法的實現
- Scikit-learn文件完善,容易上手,豐富的API
- 目前穩定版本0.19.1
2. 安裝
通過 pip 安裝
pip3 install Scikit-learn==0.19.1
安裝好之後可以通過以下命令檢視是否安裝成功
import sklearn
注:安裝scikit-learn需要Numpy, Scipy等庫
3. Scikit-learn 主要的API
- 分類、聚類、迴歸
- 特徵工程
- 模型選擇、調優
三、SKlearn 資料集
1. 資料集介紹
- sklearn.datasets
- load_*()
- 獲取小規模資料集,資料包含在datasets裡
- fetch_*(data_home=None)
- 獲取大規模資料集,需要從網路上下載。
- 函式的第一個引數是data_home,表示資料集下載的目錄,預設目錄是根目錄下的 scikit_learn_data資料夾: ~/scikit_learn_data/
- load_*()
2. sklearn小資料集
- 示例:
- sklearn.datasets.load_iris()
- 載入並返回鳶尾花資料集
- sklearn.datasets.load_boston()
- 載入並返回波士頓房價資料集
- sklearn.datasets.load_iris()
3. sklearn大資料集
- 示例:
- sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
- subset:‘train’或者’test’,‘all’,可選,選擇要載入的資料集。
- 訓練集的“訓練”,測試集的“測試”,兩者的“全部”
- sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
4. sklearn資料集返回值介紹
- load 和 fetch 返回的資料型別 datasets.base.Bunch (字典格式)
- data:特徵資料陣列(特徵值輸入)
- target:標籤陣列(目標輸出)
- feature_names:特徵名稱
- target_names:標籤名稱
- DESCR:資料描述
- Bunch 雖然是字典格式,但可以通過 ‘點’ 的形式把屬性點出來
-
示例程式碼:
from sklearn.datasets import load_iris # 獲取鳶尾花資料集 iris = load_iris() print("鳶尾花資料集的返回值:\n", iris) print("鳶尾花的特徵值:\n", iris["data"]) print("鳶尾花的目標值:\n", iris.target) print("鳶尾花特徵的名字:\n", iris.feature_names) print("鳶尾花目標值的名字:\n", iris.target_names) print("鳶尾花的描述:\n", iris.DESCR)
四、資料集劃分
-
機器學習一般的資料集會劃分為兩個部分:
- 訓練資料:用於訓練、構建模型
- 測試資料:在模型檢驗時使用,用於 評估模型是否有效
-
劃分比例:
- 訓練集:70~80%
- 測試集:20~30%
-
資料集劃分 api
- sklearn.model_selection.train_test_split( x, y, test_size, random_state )
- x 資料集的特徵值
- y 資料集的標籤值
- test_size 測試集的大小,一般為float,預設 25%
- random_state 隨機數種子,不同的種子會造成不同的隨機取樣結果。相同的種子取樣結果相同。
- return
- 測試集特徵
- 訓練集特徵
- 訓練標籤
- 測試標籤 (預設隨機取)
- sklearn.model_selection.train_test_split( x, y, test_size, random_state )
-
示例程式碼:
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 獲取鳶尾花資料集 iris = load_iris() # 預設測試集佔比 25% # 第一次劃分,隨機種子 22 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22) # 第二次劃分,隨機種子 6 x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6) # 第三次劃分,隨機種子 6 x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6) # 比較第一次和第二次劃分,當隨機種子設定不同時,劃分結果不同 print(x_train == x_train1) # 比較第二次和第三次劃分,當隨機種子設定相時,劃分結果相同 print(x_train1 == x_train2)