1. 程式人生 > 其它 >sklearn學習--資料匯入及預處理

sklearn學習--資料匯入及預處理

例子實戰之匯入資料及資料預處理

sklearndatasets中提供一些訓練資料,我們可以使用這些資料來進行分類或者回歸等等,以此熟悉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)

現在我們已經讀取了資料,首先第一件事應當是檢視資料的特點。我們可以看到標籤總共有三個,所以該資料要解決的是一個三分類問題。接著我們要去檢視資料特徵,用pandasDataFrame展示是一個很好選擇。

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))# 檢查缺失值比例 

sklearnpreprocessing中有提供Imputer()處理缺失值的函式,它提供了中位數、均值、眾數等策略填充缺失值。但是不同情況下處理不一定使用填充來處理缺失值。因此在遇到缺失值的時候要慎重處理。幸運的是我們這個資料集中沒有缺失值,這樣節省了我們處理缺失值的時間。接下來要判斷資料集的樣本類別是否均衡。

df['label'].value_counts() # 檢查資料類別的比例 

非常幸運,我們的樣本類別的比例恰好是1:1:1

,如果我們樣本比例失衡嚴重,那麼我們可能需要對失衡的比例做一些調整,例如重取樣欠取樣等等。現在資料集看上去沒有什麼大的問題了,但是在訓練之前,我們還是應當對資料進行標準化處理。

模型訓練之前,我們要對資料進行預處理。sklearn中的preprocessing模組提供非常多的資料歸一化的類。

標準化之後的資料不僅可以提高模型的訓練速度,並且不同的標準會帶來不一樣的好處。

from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(data)

例如,z-score 標準化將樣本的特徵值轉換到同一量綱下,使得不同特徵之間有可比性。以上我們就是使用了z-score標準化,sklearnpreprocessing中還有一些其他的標準化方法,有興趣的朋友可以檢視官方文件。

轉自https://zhuanlan.zhihu.com/p/33420189