scikit learn構建模型 轉換器處理資料

2021-09-17 02:36:12 字數 3301 閱讀 6592

sklearn提供了model_selection模型選擇模組、preprocessing資料預處理模組與decompisition特徵分解模組;通過這三個模組,可以實現資料預處理與模型構建前的資料標準化、二值化、資料集分割、交叉驗證和pca降維等。

(1)載入datasets中的資料集

datasets載入資料集後,可以視為乙個字典,幾乎所有的資料集均可使用data,target,feature_names,descr分別獲取資料集的資料,標籤,特徵名稱,描述資訊。

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer()

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)

print('原始資料集資料的形狀為:',cancer_data.shape)

print('原始資料集標籤的形狀為:',cancer_target.shape)

(2)將資料集劃分為訓練集和測試集

sklearn的model_selection模組提供了train_test_split(*arrays,**options)函式對資料集進行分割。

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轉換器進行資料預處理和降維

為實現大量特徵處理,sklearn將相關功能封裝為轉換器。主要包括3部分:fit,transform,fit_transform。目前,使用sklearn轉換器可實現對傳入的numpy陣列進行標準化處理、歸一化處理、二值化處理、pca降維等。以下為對cancer資料集進行離差標準化:

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) ##將規則應用於測試集

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))

離差標準化後,訓練集的最大值最小值限定在[0,1]之間,同時測試集應用了訓練集的離差標準化規則,資料超出了[0,1],除了離差標準化函式minmaxscaler之外,還提供了一系列預處理函式:

standarscaler:對特徵進行標準差標準化;normalizer:對特徵進行歸一化; onehotencoder :對定性特徵進行獨熱編碼;

除了基本特徵變化函式,還提供了降維演算法、特徵選擇演算法、均通過轉換器的方式實現,對breast_cancer資料集進行pca降維,**如下:

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)

Flask sqlalchemy構建模型類

orm對映關係 示例 from flask import flask from flask sqlalchemy import sqlalchemy 相關配置 sqlalchemy database uri mysql sqlalchemy track modifications false sql...

達觀杯 構建模型(一)linearSVM

1.特徵 tfidf word tfidf article 2.模型 linearsvm 3.引數 c 5 from sklearn.svm import linearsvc 支援向量機 from sklearn.calibration import calibratedclassifiercv i...

Model Builder中構建模型的注意事項

1 單獨建立的sql表示式變數無法新建表示式,甚至不能手動填寫 從工具引數中建立的表示式變數則可以根據具有依賴關係的要素類來新建表示式,需要注意的是,如果希望表示式變數具有某種依賴關係,那麼工具應該先輸入有效的輸入要素。在模型屬性頁面的引數列表中可以看到該sql表示式的依賴關係,但是依賴關係不能手動...