1. 程式人生 > 其它 >3.scikit-learn中資料集介紹

3.scikit-learn中資料集介紹

1. scikit-learn資料集API介紹

  • sklearn.datasets
    • 載入獲取流行資料集
    • datasets.load_*()
      • 獲取小規模資料集,資料包含在datasets裡
    • datasets.fetch_*(data_home=None)
      • 獲取大規模資料集,需要從網路上下載,函式的第一個引數是data_home,表示資料集下載的目錄,預設是 ~/scikit_learn_data/

1.1.1 sklearn小資料集

  • sklearn.datasets.load_iris()

    載入並返回鳶尾花資料集

1.1.2 sklearn大資料集

  • sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
    • subset:'train'或者'test','all',可選,選擇要載入的資料集。
    • 訓練集的“訓練”,測試集的“測試”,兩者的“全部”

1.2 sklearn資料集返回值介紹

  • load和fetch返回的資料型別datasets.base.Bunch(字典格式)
    • data:特徵資料陣列,是 [n_samples * n_features] 的二維 numpy.ndarray 陣列
    • target:標籤陣列,是 n_samples 的一維 numpy.ndarray 陣列
    • DESCR:資料描述
    • feature_names:特徵名,新聞資料,手寫數字、迴歸資料集沒有
    • target_names:標籤名
from sklearn.datasets import load_iris
# 獲取鳶尾花資料集 iris = load_iris() print("鳶尾花資料集的返回值:\n", iris) # 返回值是一個繼承自字典的Bench print("鳶尾花的特徵值:\n", iris["data"]) print("鳶尾花的目標值:\n", iris.target) print("鳶尾花特徵的名字:\n", iris.feature_names) print("鳶尾花目標值的名字:\n", iris.target_names) print("鳶尾花的描述:\n", iris.DESCR)

1.3 檢視資料分佈

通過建立一些圖,以檢視不同類別是如何通過特徵來區分的。 在理想情況下,標籤類將由一個或多個特徵對完美分隔。 在現實世界中,這種理想情況很少會發生。

  • seaborn介紹 (官方連結:http://seaborn.pydata.org/)

    • Seaborn 是基於 Matplotlib 核心庫進行了更高階的 API 封裝,可以讓你輕鬆地畫出更漂亮的圖形。而 Seaborn 的漂亮主要體現在配色更加舒服、以及圖形元素的樣式更加細膩。
    • 安裝 pip3 install seaborn
    • seaborn.lmplot() 是一個非常有用的方法,它會在繪製二維散點圖時,自動完成迴歸擬合

      • sns.lmplot() 裡的 x, y 分別代表橫縱座標的列名,
      • data= 是關聯到資料集,
      • hue=*代表按照 species即花的類別分類顯示,
      • fit_reg=是否進行線性擬合。
 內嵌繪圖
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 把資料轉換成dataframe的格式
iris_d = pd.DataFrame(iris['data'], columns = ['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width'])
iris_d['Species'] = iris.target

def plot_iris(iris, col1, col2):
    sns.lmplot(x = col1, y = col2, data = iris, hue = "Species", fit_reg = False)
    plt.xlabel(col1)
    plt.ylabel(col2)
    plt.title('鳶尾花種類分佈圖')
    plt.show()
plot_iris(iris_d, 'Petal_Width', 'Sepal_Length')

1.4 資料集的劃分

機器學習一般的資料集會劃分為兩個部分:

  • 訓練資料:用於訓練,構建模型
  • 測試資料:在模型檢驗時使用,用於評估模型是否有效

劃分比例:

  • 訓練集:70% 80% 75%
  • 測試集:30% 20% 25%

資料集劃分api

  • sklearn.model_selection.train_test_split(arrays, *options)
    • x 資料集的特徵值
    • y 資料集的標籤值
    • test_size 測試集的大小,一般為float
    • random_state 隨機數種子,不同的種子會造成不同的隨機取樣結果。相同的種子取樣結果相同。
    • return 測試集特徵訓練集特徵值值,訓練標籤,測試標籤(預設隨機取)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 1、獲取鳶尾花資料集
iris = load_iris()
# 對鳶尾花資料集進行分割
# 訓練集的特徵值x_train 測試集的特徵值x_test 訓練集的目標值y_train 測試集的目標值y_test
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
print("x_train:\n", x_train.shape)
# 隨機數種子
x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)
x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)
print("如果隨機數種子不一致:\n", x_train == x_train1)
print("如果隨機數種子一致:\n", x_train1 == x_train2)