scikit-learn

(1)數據標準化(Standardization or Mean Removal and Variance Scaling)python

進行標準化縮放的數據均值爲0,具備單位方差。函數

scale函數提供一種便捷的標準化轉換操做,以下:工具

 

[python]  view plain  copy
 
  1. >>> from sklearn import preprocessing #導入數據預處理包  
  2. >>> X=[[1.,-1.,2.],  
  3.        [2.,0.,0.],  
  4.        [0.,1.,-1.]]  
  5. >>> X_scaled = preprocessing.scale(X)  
  6. >>> X_scaled  
  7. array([[ 0.        , -1.22474487,  1.33630621],  
  8.        [ 1.22474487,  0.        , -0.26726124],  
  9.        [-1.22474487,  1.22474487, -1.06904497]])  
[python]  view plain  copy
 
  1. >>> X_scaled.mean(axis=0)  
  2. array([ 0.,  0.,  0.])  
  3. >>> X_scaled.std(axis=0)  
  4. array([ 1.,  1.,  1.])  
一樣咱們也能夠經過preprocessing模塊提供的Scaler(StandardScaler 0.15之後版本)工具類來實現這個功能:

 

 

 

 

 

 

[python]  view plain  copy
 
  1. >>> scaler = preprocessing.StandardScaler().fit(X)  
  2. >>> scaler  
  3. StandardScaler(copy=True, with_mean=True, with_std=True)  
  4. >>> scaler.mean_  
  5. array([ 1.        ,  0.        ,  0.33333333])  
  6. >>> scaler.std_  
  7. array([ 0.81649658,  0.81649658,  1.24721913])  
  8. >>> scaler.transform(X)  
  9. array([[ 0.        , -1.22474487,  1.33630621],  
  10.        [ 1.22474487,  0.        , -0.26726124],  
  11.        [-1.22474487,  1.22474487, -1.06904497]])  
(2)數據規範化(Normalization)
把數據集中的每一個樣本全部數值縮放到(-1,1)之間。
[python]  view plain  copy
 
  1. >>> X = [[ 1., -1., 2.],  
  2.      [ 2., 0., 0.],  
  3.      [ 0., 1., -1.]]  
  4. >>> X_normalized = preprocessing.normalize(X, norm='l2')  
  5. >>> X_normalized  
  6. array([[ 0.40824829, -0.40824829,  0.81649658],  
  7.        [ 1.        ,  0.        ,  0.        ],  
  8.        [ 0.        ,  0.70710678, -0.70710678]])  
  9. >>> normalizer = preprocessing.Normalizer().fit(X) # fit does nothing  
  10. >>> normalizer  
  11. Normalizer(copy=True, norm='l2')  
  12. >>> normalizer.transform(X)  
  13. array([[ 0.40824829, -0.40824829,  0.81649658],  
  14.        [ 1.        ,  0.        ,  0.        ],  
  15.        [ 0.        ,  0.70710678, -0.70710678]])  
  16. >>> normalizer.transform([[-1., 1., 0.]])  
  17. array([[-0.70710678,  0.70710678,  0.        ]])  
(3)二進制化(Binarization)
將數值型數據轉化爲布爾型的二值數據,能夠設置一個閾值(threshold)

 

 

 

 

 

 

[python]  view plain  copy
 
  1. >>> X = [[ 1., -1., 2.],  
  2.      [ 2., 0., 0.],  
  3.      [ 0., 1., -1.]]  
  4. >>> binarizer = preprocessing.Binarizer().fit(X) # fit does nothing  
  5. >>> binarizer  
  6. Binarizer(copy=True, threshold=0.0) # 默認閾值爲0.0  
  7. >>> binarizer.transform(X)  
  8. array([[ 1.,  0.,  1.],  
  9.        [ 1.,  0.,  0.],  
  10.        [ 0.,  1.,  0.]])  
  11. >>> binarizer = preprocessing.Binarizer(threshold=1.1) # 設定閾值爲1.1  
  12. >>> binarizer.transform(X)  
  13. array([[ 0.,  0.,  1.],  
  14.        [ 1.,  0.,  0.],  
  15.        [ 0.,  0.,  0.]])  

 

 

 

(4)標籤預處理(Label preprocessing)編碼

4.1)標籤二值化(Label binarization)spa

LabelBinarizer一般用於經過一個多類標籤(label)列表,建立一個label指示器矩陣.net

[python]  view plain  copy
 
  1. >>> lb = preprocessing.LabelBinarizer()  
  2. >>> lb.fit([1, 2, 6, 4, 2])  
  3. LabelBinarizer(neg_label=0, pos_label=1)  
  4. >>> lb.classes_  
  5. array([1, 2, 4, 6])  
  6. >>> lb.transform([1, 6])  
  7. array([[1, 0, 0, 0],  
  8.        [0, 0, 0, 1]])  

上例中每一個實例中只有一個標籤(label),LabelBinarizer也支持每一個實例數據顯示多個標籤:code

[python]  view plain  copy
 
  1. >>> lb.fit_transform([(1, 2), (3,)]) #(1,2)實例中就包含兩個label  
  2. array([[1, 1, 0],  
  3.        [0, 0, 1]])  
  4. >>> lb.classes_  
  5. array([1, 2, 3])  


 

4.2)標籤編碼(Label encoding)

orm

[python]  view plain  copy
 
  1. >>> from sklearn import preprocessing  
  2. >>> le = preprocessing.LabelEncoder()  
  3. >>> le.fit([1, 2, 2, 6])  
  4. LabelEncoder()  
  5. >>> le.classes_  
  6. array([1, 2, 6])  
  7. >>> le.transform([1, 1, 2, 6])  
  8. array([0, 0, 1, 2])  
  9. >>> le.inverse_transform([0, 0, 1, 2])  
  10. array([1, 1, 2, 6])  


也能夠用於非數值類型的標籤到數值類型標籤的轉化:blog

[python]  view plain  copy
 
  1. >>> le = preprocessing.LabelEncoder()  
  2. >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])  
  3. LabelEncoder()  
  4. >>> list(le.classes_)  
  5. ['amsterdam', 'paris', 'tokyo']  
  6. >>> le.transform(["tokyo", "tokyo", "paris"])  
  7. array([2, 2, 1])  
  8. >>> list(le.inverse_transform([2, 2, 1]))  
  9. ['tokyo', 'tokyo', 'paris']  
相關文章
相關標籤/搜索