1. 程式人生 > 實用技巧 >機器學習基礎

機器學習基礎

sklearn的資料集

  • 資料集劃分
  • 資料集介面介紹

資料集劃分

  • 前提:機器學習就是從資料中自動分析獲得規律,並利用規律對未知資料進行預測。換句話說,我們的模型一定是要經過樣本資料對其進行訓練,才可以對未知資料進行預測的。
  • 問題:我們得到資料後,是否將資料全部用來訓練模型呢?
    • 當然不是!因為我們如果模型(資料的規律)都是從資料中得來的,那麼該模型的效能評估如何進行呢?還是基於對原先的資料進行預測嗎?可想不是的,如果模型對原先的資料進行預測,由於模型(資料的規律)本來就是從該資料中獲取的,所以預測的精度幾乎會是百分之百。所以想要評估模型的好壞,需要使用一組新資料對模型進行評估。
    • 因此我們需要將原先的樣本資料拆分成兩部分:
      • 訓練集:訓練模型
      • 測試集:評估模型
        • 不同型別的模型對應的評估方式是不一樣的
  • 資料集劃分的API
    • from sklearn.model_selection import train_test_split
    • train_test_split(x,y,test_size,random_state)引數介紹:
      • x:特徵
      • y:目標
      • test_size:測試集的比例
      • random_state:打亂的隨機種子
    • 返回值:訓練特徵,測試特徵,訓練目標,測試目標

資料集介面介紹

  • sklearn.datasets.load_*():獲取小規模的資料集
  • sklearn.datasets.fetch_*(data_home=None,subset):獲取大規模的資料集data_home表示資料集下載目錄,None為預設值表示的是家目錄/scikit_learn_data(自動建立該資料夾)下。需要從網路下載.subset為需要下載的資料集,可以為train,test,all
#方式1:獲取小規模的資料集
import sklearn.datasets as datasets
iris = datasets.load_iris()
#提取樣本資料
feature = iris['data']
target = iris['target']


feature.shape
(150, 4)

target.shape
(150,)

target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) #切分樣本資料 from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.2,random_state=2020) x_train,y_train #訓練集資料

x_test,y_test #測試集資料

#方式2:獲取較大規模的資料集
datasets.fetch_20newsgroups(data_home='資料集儲存路徑',subset='all')