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)
sklearn基礎及資料處理
庫整合了多種機器學習演算法,可在資料分析過程快速建立模型。通過 pandas 庫雖然已經提供資料合併 清洗 標準化 離差標準化 標準差標準化 小數定標標準化 為構建機器學習模型對資料特徵還需處理更多預處操作,因此 sklearn 將相關預處理功能封裝為統一介面 轉換器 transformer 使用 ...
python 資料處理基礎
2 python 語法簡介 型別轉化 int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eva...
C 基礎 資料處理
char型別 const限定符 浮點數c 算術運算子 auto宣告 當需要切換輸出八進位制 十進位制和十六進製制整數時,可以通過控制符oct dec hex來進行控制 cout hex cout 0x42 cout oct cout 042 cout dec cout 42 這三個控制符只是修改了整...