1. 程式人生 > >Sklearn資料預處理:scale, StandardScaler, MinMaxScaler, Normalizer

Sklearn資料預處理:scale, StandardScaler, MinMaxScaler, Normalizer

問題:怎麼讓一組資料平均數為0,方差為1

        有一組資料     X: {x1,x2,x3,.....,xn}      (1)
        設其平均值為:E(X) = μ (2)
        設其方差為 :D(X) = σ² (3)
        那麼經過變換:y = (x - μ)/σ (4)
        得到的新變數:Y: {y1,y2,y3,......yn} (5)
        的均值為 0、方差為 1 。(證明略)

--------------------------------------------------------------

一、標準化

去除均值和方差縮放:通過(X-X_mean)/std計算每個屬性(每列),進而使所有資料聚集在0附近,方差為1.

(1)、sklearn.preprocessing.scale() 
直接將給定資料進行標準化

from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X)
  • 1
  • 2
  • 3
  • 4
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]]
)
  • 1
  • 2
  • 3
X_scaled.mean(axis=0)
array([ 0.,  0.,  0.])
  • 1
  • 2
X_scaled.std(axis=0)
array([ 1.,  1.,  1.])
  • 1
  • 2

(2)、sklearn.preprocessing.StandardScaler() 
可儲存訓練集中的均值、方差引數,然後直接用於轉換測試集資料。

scaler = preprocessing.StandardScaler().fit(X)
scaler.transform(X)  
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]]
)
scaler.mean_
array([ 1.        ,  0.        ,  0.33333333])
scaler.var_
array([ 0.66666667,  0.66666667,  1.55555556])

二、縮放到指定範圍

將屬性縮放到一個指定的最大和最小值(通常是1-0)之間,這樣處理可對方差非常小的屬性增強其穩定性,也可維持稀疏矩陣中為0的條目。 
preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True) 
計算公式: 
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) 
X_scaled = X_std * (max - min) + min 
其中 
feature_range : tuple (min, max), default=(0, 1)

minmaxscaler = preprocessing.MinMaxScaler().fit(X)
minmaxscaler.transform(X)
array([[ 0.5       ,  0.        ,  1.        ],
       [ 1.        ,  0.5       ,  0.33333333],
       [ 0.        ,  1.        ,  0.        ]])
minmaxscaler.scale_
array([ 0.5       ,  0.5       ,  0.33333333])
 minmaxscaler.min_ 
 array([ 0.        ,  0.5       ,  0.33333333])
  • 1
  • 2

也可直接應用fit_transform(X)實現fit和transform功能。

三、正則化

對每個樣本計算其p-範數,再對每個元素除以該範數,這使得每個處理後樣本的p-範數(l1-norm,l2-norm)等於1。如果後續要使用二次型等方法計算兩個樣本之間的相似性會有用。 
preprocessing.Normalizer(norm=’l2’, copy=True)

normalizer = preprocessing.Normalizer().fit(X)
normalizer.transform(X)
array([[ 0.40824829, -0.40824829,  0.81649658],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

幾個概念

1-範數:向量各分量絕對值之和 
2-範數:向量長度 
最大範數:向量各分量絕對值的最大值 
p-範數的計算公式:||X||p=(|x1|^p+|x2|^p+…+|xn|^p)^1/p

相關推薦

Sklearn資料處理scale, StandardScaler, MinMaxScaler, Normalizer

問題:怎麼讓一組資料平均數為0,方差為1        有一組資料 X: {x1,x2,x3,.....,xn} (1)        設其平均值為:E(X) = μ (2)        設其方差為 :D(X) =

Sklearn.processingscale, StandardScaler, MinMaxScaler, Normalizer

一、標準化 去除均值和方差縮放:通過(X-X_mean)/std計算每個屬性(每列),進而使所有資料聚集在0附近,方差為1. (1)、sklearn.preprocessing.scale()  直接將給定資料進行標準化 from sklearn import preprocess

機器學習(一)sklearn進行資料處理缺失值處理資料標準化、歸一化

在我們平時進行資料資料探勘建模時,一般首先得對資料進行預處理,其中就包括資料缺失值、異常值處理、資料的標準化、歸一化等等。 下面主要介紹如何對一個數據檔案進行資料的缺失值處理、標準化和歸一化 MID_SP MID_AC MID_R25 MID_COND LITHO1 55.

Pythonsklearn資料處理中fit(),transform()與fit_transform()的區別

1 概述 注意這是資料預處理中的方法: Fit(): Method calculates the parameters μ and σ and saves them as internal objects. 解釋:簡單來說,就是求得訓練集X的均值啊,方差啊,最大值啊,最小

sklearn 資料處理1: StandardScaler

StandardScaler 作用:去均值和方差歸一化。且是針對每一個特徵維度來做的,而不是針對樣本。 【注:】 並不是所有的標準化都能給estimator帶來好處。 “Standardization of a dataset is a

sklearn資料處理(preprocessing)系列——類別以及特徵的編碼(Encoder)

  一、特徵編碼 1 類別的獨熱編碼(One-Hot Encoder) 關於什麼是獨熱編碼以及為什麼要進行獨熱編碼,這裡就不詳細介紹了,本文只介紹“具體實踐方式”,原理一筆帶過。 第一步:先對離散的數字、離散的文字、離散的類別進行編號,使用 LabelEncode

python資料處理 資料標準化

何為標準化: 在資料分析之前,我們通常需要先將資料標準化(normalization),利用標準化後的資料進行資料分析。資料標準化也就是統計資料的指數化。資料標準化處理主要包括資料同趨化處理和無量綱化處理兩個方面。資料同趨化處理主要解決不同性質資料問題,對不同性質指標直接加總不能正確

python資料處理 資料相關性

何為相關性: 相關性分析是指對具備相關性關係的變數進行分析,從而衡量變數間的相關程度或密切程度。相關性可以應用到所有資料的分析過程中,任何事物之間都是存在一定的聯絡。相關性用R(相關係數)表示,R的取值範圍是[-1, 1] 相關和因果: 相關並不是因果,例如商品銷售活動時,通

python資料處理 資料共線性處理

何為共線性: 共線性問題指的是輸入的自變數之間存在較高的線性相關度。共線性問題會導致迴歸模型的穩定性和準確性大大降低,另外,過多無關的維度計算也很浪費時間 共線性產生原因: 變量出現共線性的原因: 資料樣本不夠,導致共線性存在偶然性,這其實反映了缺少資料對於資料建

python資料處理 資料抽樣

何為資料抽樣: 抽樣是資料處理的一種基本方法,常常伴隨著計算資源不足、獲取全部資料困難、時效性要求等情況使用。 抽樣方法: 一般有四種方法: 隨機抽樣 直接從整體資料中等概率抽取n個樣本。這種方法優勢是,簡單、好操作、適用於分佈均勻的場景;缺點是總體大時無法一一編

python資料處理 樣本分佈不均(過取樣和欠取樣)

何為樣本分佈不均: 樣本分佈不均衡就是指樣本差異非常大,例如共1000條資料樣本的資料集中,其中佔有10條樣本分類,其特徵無論如何你和也無法實現完整特徵值的覆蓋,此時屬於嚴重的樣本分佈不均衡。 為何要解決樣本分佈不均: 樣本分部不均衡的資料集也是很常見的:比如惡意刷單、黃牛訂

python資料處理 資料降維

資料為何要降維 資料降維可以降低模型的計算量並減少模型執行時間、降低噪音變數資訊對於模型結果的影響、便於通過視覺化方式展示歸約後的維度資訊並減少資料儲存空間。因此,大多數情況下,當我們面臨高維資料時,都需要對資料做降維處理。 資料降維有兩種方式:特徵選擇,維度轉換 特徵選擇

python資料處理 字元變數獨熱編碼(one-hot encoding)

許多的資料取樣中會有很多以以字串形式出現的資料,這樣的資料沒有辦法直接跟其他數值變數合併成向量,這些值一般是分類資料或是順序資料。 分類資料:分類資料指某些資料類別的只能歸於某一類非數值型資料,例如男、女。分類資料中的值沒有明顯高低好壞之分,只是由來區分兩個或多個具有相同或相

python資料處理 使用pandas 進行資料清洗

問題: 介紹資料清洗方法。。 解答: 所謂資料清洗主要處理的是資料中的缺失值、異常值和重複值: 缺失值處理 資料缺失值指由於各種原因導致資料中存在的空缺值:資料庫中的null,python返回物件none,pandas或numpy中的nan;另空字串是有實體的不算是缺

python資料處理 資料離散化

何為離散化: 一些資料探勘演算法中,要求資料是分類屬性形式。因此常常需要將連續屬性的資料通過斷點進行劃分最後歸屬到不同的分類,即離散化。 為什麼要離散化: 調高計算效率 分類模型計算需要 給予距離計算模型(k均值、協同過濾)中降低異常資料對模型的影響

資料處理One-Hot Encoding

機器學習中,在對資料進行訓練之前,都會對資料進行預處理,也就是特徵提取,個人認為特徵提取是訓練模型中非常非常重要的一步! 在迴歸,分類,聚類等機器學習演算法中,特徵之間距離的計算或相似度的計算是非常重要的,而我們常用的距離或相似度的計算都是在歐式空間的相似度計算,計算餘弦相似性,基於的就是歐

3-6 用 Pandas 進行資料處理資料清洗與視覺化(版本py3)

主要內容: 格式轉換 缺失資料 異常資料 資料標準化操作 格式轉換 如Python記錄時間的方式,不能夠直接實現減運算,就需要進行轉換 pandas.to_datetime 缺失資料 忽略缺失資料 直接標記 利用平均值、最常出現值進行填充 異常資料 處

資料處理獨熱編碼(One-Hot Encoding)和 LabelEncoder標籤編碼

一、問題由來 在很多機器學習任務中,特徵並不總是連續值,而有可能是分類值。 離散特徵的編碼分為兩種情況:   1、離散特徵的取值之間沒有大小的意義,比如color:[red,blue],那麼就使用one-hot編碼   2、離散特徵的取值有大小的意義,比如size:[

資料處理樣本非平衡處理

轉載:https://zhuanlan.zhihu.com/p/37311047 非平衡資料會影響最後的評判效果,嚴重的會帶來過擬合的效果,即模型總是把樣本劃分到樣本量較多的那一種。為了讓模型的評判更準確,我們需要對非平衡資料

Python資料處理機器學習、人工智慧通用技術(1)

Python資料預處理:機器學習、人工智慧通用技術 白寧超  2018年12月24日17:28:26  摘要:大資料技術與我們日常生活越來越緊密,要做大資料,首要解決資料問題。原始資料存在大量不完整、不一致、有異常的資料,嚴重影響到資料建模的執行效率,甚至可能導致模型