sklearn.preprocessing.StandardScaler數據標准化


原文鏈接:https://blog.csdn.net/weixin_39175124/article/details/79463993

數據在前處理的時候,經常會涉及到數據標准化。將現有的數據通過某種關系,映射到某一空間內。常用的標准化方式是,減去平均值,然后通過標准差映射到均至為0的空間內。系統會記錄每個輸入參數的平均數和標准差,以便數據可以還原。

很多ML的算法要求訓練的輸入參數的平均值是0並且有相同階數的方差例如:RBF核的SVM,L1和L2正則的線性回歸

sklearn.preprocessing.StandardScaler能夠輕松的實現上述功能。

調用方式為: 
首先定義一個對象: 
ss = sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True) 
在這里 
copy; with_mean;with_std 
默認的值都是True.

copy 如果為false,就會用歸一化的值替代原來的值;如果被標准化的數據不是np.array或scipy.sparse CSR matrix, 原來的數據還是被copy而不是被替代

with_mean 在處理sparse CSR或者 CSC matrices 一定要設置False不然會超內存

能夠查詢的屬性:

scale_: 縮放比例,同時也是標准差

mean_: 每個特征的平均值

var_:每個特征的方差

n_sample_seen_:樣本數量,可以通過patial_fit 增加

舉個例子:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import StandardScaler
#data = pd.read_csv("C:/學習/python/creditcard/creditcard.csv")
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape((3, 3))
ss = StandardScaler()
print(x)
ss.fit(X=x)
print(ss.n_samples_seen_)
print(ss.mean_)
print(ss.var_)
print(ss.scale_)
y = ss.fit_transform(x)
print(y)
z = ss.inverse_transform(y)
print(z)

運行結果為:

 

 

能夠被調用的Methods:

fit(X,y=None):計算輸入數據各特征的平均值,標准差以及之后的縮放系數 ,以后就可以按照這個數據調用transofrm()
X:訓練集
y: 傳入為了使得和Pipeline兼容

fit_transform(X,y=None,**fit_params): 通過fit_params調整數據X,y得到一個調整后的X ,使得每個特征的數據分布平均值為0,方差為1
X 為array:訓練集 
y 為標簽 
返回一個改變后的X

get_params(deep=True): 返回StandardScaler對象的設置參數,

inverse_transform(X,copy=None):顧名思義,就是按照縮放規律反向還原當前數據 

transform(X, y=’deprecated’, copy=None):基於現有的對象規則,標准化新的參數

可以認為fit_transform()是fit()和transform()的合體。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM