sklearn學習--資料匯入及預處理
阿新 • • 發佈:2021-06-21
例子實戰之匯入資料及資料預處理
sklearn的datasets中提供一些訓練資料,我們可以使用這些資料來進行分類或者回歸等等,以此熟悉sklearn的使用。
如下面程式碼所示我們讀取了鳶尾屬植物的分類資料集。load_iris()返回的是一個類似字典的物件通過關鍵字則可以獲取對應的資料。
from sklearn.datasets import load_iris dataSet = load_iris() data = dataSet['data'] # 資料 label = dataSet['target'] # 資料對應的標籤 feature = dataSet['feature_names'] # 特徵的名稱 target = dataSet['target_names'] # 標籤的名稱 print(target)
現在我們已經讀取了資料,首先第一件事應當是檢視資料的特點。我們可以看到標籤總共有三個,所以該資料要解決的是一個三分類問題。接著我們要去檢視資料特徵,用pandas的DataFrame展示是一個很好選擇。
import pandas as pdimport numpy as np
df = pd.DataFrame(np.column_stack((data,label)),columns = np.append(feature,'label'))
df.head()# 檢視前五行資料
我們可以看到一條資料對應了4個連續特徵,接著應當檢視一些資料集的缺失值的比例,這一步非常重要,如果資料集中出現缺失值,在訓練模型的時候就會出現問題。
df.isnull().sum(axis=0).sort_values(ascending=False)/float(len(df))# 檢查缺失值比例
sklearn的preprocessing中有提供Imputer()處理缺失值的函式,它提供了中位數、均值、眾數等策略填充缺失值。但是不同情況下處理不一定使用填充來處理缺失值。因此在遇到缺失值的時候要慎重處理。幸運的是我們這個資料集中沒有缺失值,這樣節省了我們處理缺失值的時間。接下來要判斷資料集的樣本類別是否均衡。
df['label'].value_counts() # 檢查資料類別的比例
非常幸運,我們的樣本類別的比例恰好是1:1:1
模型訓練之前,我們要對資料進行預處理。sklearn中的preprocessing模組提供非常多的資料歸一化的類。
標準化之後的資料不僅可以提高模型的訓練速度,並且不同的標準會帶來不一樣的好處。
from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(data)
例如,z-score 標準化將樣本的特徵值轉換到同一量綱下,使得不同特徵之間有可比性。以上我們就是使用了z-score標準化,sklearn的preprocessing中還有一些其他的標準化方法,有興趣的朋友可以檢視官方文件。
轉自https://zhuanlan.zhihu.com/p/33420189