sklearn基礎及資料處理
sklearn 庫整合了多種機器學習演算法,可在資料分析過程快速建立模型。透過 pandas 庫雖然已經提供資料合併、清洗、標準化(離差標準化、標準差標準化、小數定標標準化),為構建機器學習模型對資料特徵還需處理更多預處操作,因此 sklearn 將相關預處理功能封裝為統一介面 --- 轉換器( Transformer )。使用 sklearn 轉換器能夠實現對傳入的 NumPy 陣列進行標準化處理、二值化、 PCA 將為等操作。
說到轉換資料,實際上 padas 庫也有提供了啞變數處理類別資料、離散化連續資料等功能。這也是為什麼僅學 SQL 無法完全替代的 pandas 功能的原因之一。但 sklearn 引入轉換器能夠對訓練集和測試集操作能夠更加方便統一。
sklearn 也提供了便於學習的經典資料集,這些資料集類似字典方式存放。透過 ancanda中 Spyder 變數介面能夠直觀的看到這些資料及其值。透過這些資料我們也能領會資料分析之前對資料格式最終搞成什麼樣子。例如:資料( data )、標籤( target )、特性( feature )等三個基本要素。後續訓練集和測試的拆分及進行訓練都離不開這些準備資料。
1、載入datasats資料集
如果需要載入某個資料集,則可以將對應的函式賦值給某個變數,再次強調資料集三要素:資料(data)、標籤(target)、特性(feature)。如下面程式碼所示:
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()##將資料集賦值給iris變數
print('breast_cancer資料集的長度為:',len(cancer))
print('breast_cancer資料集的型別為:',type(cancer))
cancer_data = cancer['data']
print('breast_cancer資料集的資料為:','\n',cancer_data)
cancer_target = cancer['target'] ## 取出資料集的標籤
print('breast_cancer資料集的標籤為:\n',cancer_target)
cancer_names = cancer['feature_names'] ## 取出資料集的特徵名
print('breast_cancer資料集的特徵名為:\n',cancer_names)
cancer_desc = cancer['DESCR'] ## 取出資料集的描述資訊
print('breast_cancer資料集的描述資訊為:\n',cancer_desc)
2、將資料劃分為訓練集和測試集
資料為什麼要拆分?因為這是機器學習方法創新點。讓計算思維來發掘資料內部的關聯關係。這個方法不像傳統的實驗思維和理論思維。機器學習思路就是根據給定標籤訓練集來找出資料內在規律和關係。
sklearn 的 model_selection 模組提供了 train_test_split 函式,能夠對資料集進行拆分。
print('原始資料集資料的形狀為:',cancer_data.shape)
print('原始資料集標籤的形狀為:',cancer_target.shape)
from sklearn.model_selection import train_test_split
cancer_data_train, cancer_data_test,\
cancer_target_train, cancer_target_test = \
train_test_split(cancer_data, cancer_target,
test_size=0.2, random_state=42)
print('訓練集資料的形狀為:',cancer_data_train.shape)
print('訓練集標籤的形狀為:',cancer_target_train.shape)
print('測試集資料的形狀為:',cancer_data_test.shape)
print('測試集標籤的形狀為:',cancer_target_test.shape)
3 、透過 sklearn 轉換器進行資料預處理和降維
為了消除特徵之間量綱和取值範圍差異可能會造成的影響需要對資料進行標準化處理,也叫做規範化處理。實際上規範化就是減少空間複雜度的過程,PCA降維對應於時間複雜度降低過程。
sklearn 的轉換器主要包括 3 個方法: fit 、 transform 、 fit_transform 等。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
Scaler = MinMaxScaler().fit(cancer_data_train) ##生成規則
##將規則應用於訓練集
cancer_trainScaler = Scaler.transform(cancer_data_train)
##將規則應用於測試集
##cancer_testScaler = Scaler.transform(cancer_data_test)
Scaler = MinMaxScaler().fit(cancer_data_test) ##生成規則
cancer_testScaler = Scaler.transform(cancer_data_test)
print('離差標準化前訓練集資料的最小值為:',np.min(cancer_data_train))
print('離差標準化後訓練集資料的最小值為:',np.min(cancer_trainScaler))
print('離差標準化前訓練集資料的最大值為:',np.max(cancer_data_train))
print('離差標準化後訓練集資料的最大值為:',np.max(cancer_trainScaler))
print('離差標準化前測試集資料的最小值為:',np.min(cancer_data_test))
print('離差標準化後測試集資料的最小值為:',np.min(cancer_testScaler))
print('離差標準化前測試集資料的最大值為:',np.max(cancer_data_test))
print('離差標準化後測試集資料的最大值為:',np.max(cancer_testScaler))
from sklearn.decomposition import PCA
pca_model = PCA(n_components=10).fit(cancer_trainScaler) ##生成規則
cancer_trainPca = pca_model.transform(cancer_trainScaler) ##將規則應用於訓練集
cancer_testPca = pca_model.transform(cancer_testScaler) ##將規則應用於測試集
print('PCA降維前訓練集資料的形狀為:',cancer_trainScaler.shape)
print('PCA降維後訓練集資料的形狀為:',cancer_trainPca.shape)
print('PCA降維前測試集資料的形狀為:',cancer_testScaler.shape)
print('PCA降維後測試集資料的形狀為:',cancer_testPca.shape)
參考書:
Python資料分析與應用 黃紅梅、張良均 主編 中國工信出版集團和人民郵電出版社
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-2655854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [資料處理]python基礎Python
- sklearn中常用資料預處理方法
- sklearn 第二篇:資料預處理
- Sklearn之資料預處理——StandardScaler歸一化
- 【Python資料分析基礎】: 資料缺失值處理Python
- Python資料分析基礎: 資料缺失值處理Python
- Pandas 基礎 (5) - 處理缺失的資料
- 文字資料預處理:sklearn 中 CountVectorizer、TfidfTransformer 和 TfidfVectorizerORM
- sklearn: CountVectorize處理及一些使用引數
- Pandas多維特徵資料預處理及sklearn資料不均衡處理相關技術實踐-大資料ML樣本集案例實戰特徵大資料
- 資料處理及跳轉
- 【Python資料分析基礎】: 異常值檢測和處理Python
- 【scikit-learn基礎】--『預處理』之 資料縮放
- SpringMVC:資料處理及跳轉SpringMVC
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- 【scipy 基礎】--影像處理
- springboot統一異常處理及返回資料的處理Spring Boot
- 機器學習 第4篇:資料預處理(sklearn 插補缺失值)機器學習
- Pandas 基礎 (6) - 用 replace () 函式處理不合理資料函式
- UCI資料集詳解及其資料處理(附148個資料集及處理程式碼)
- C#基礎之前處理器,異常處理C#
- Python基礎 -- 異常處理Python
- 【scipy 基礎】--訊號處理
- 影像處理基礎篇(一)
- 處理器基礎知識
- Python資料處理(二):處理 Excel 資料PythonExcel
- 【scikit-learn基礎】--『預處理』之 缺失值處理
- PHP基礎:異常處理ExceptionPHPException
- python 基礎之異常處理Python
- webpack基礎–css相關處理WebCSS
- MATLAB及其訊號處理基礎Matlab
- Flutter基礎-039-json處理FlutterJSON
- [python] 基於Tablib庫處理表格資料Python
- 資料處理
- 分享Hadoop處理大資料工具及優勢Hadoop大資料
- 關於使用sklearn進行資料預處理 —— 歸一化/標準化/正則化
- Java基礎-處理json字串解析案例JavaJSON字串
- Oracle開發基礎-異常處理Oracle