日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sklearn_scaler

發布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn_scaler 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • sklearn_scaler
    • ref
    • note
      • 1. scale 和 StandardScaler

sklearn_scaler

sklearn 縮放

from sklearn.preprocessing import scale from sklearn.preprocessing import StandardScaler

ref

ref1:關于使用sklearn進行數據預處理 —— 歸一化/標準化/正則化

代碼demo和原理說明

ref2:真的明白sklearn.preprocessing中的scale和StandardScaler兩種標準化方式的區別嗎?

講述了scaler方法和StandardScaler類的不同,和參數意義

ref3:Sklearn-scaler對比

各種縮放結果的圖示

note

1. scale 和 StandardScaler

公式為:(X-mean)/std 計算時對**每個屬性/每列**分別進行。

得到的結果是,對于每個屬性/每列來說所有數據都聚集在0附近,方差為1。

這個也就是z-score方法

**方法一:**直接使用scaler方法,對數據處理

from sklearn import preprocessing import numpy as np """ 把訓練集和測試集放在一塊進行標準化處理,求出共同的均值和方差,然后X減去均值再除以方差。 處理成均值為0, 方差為1的數據。 參考了測試集本身。 """ X = np.array([[1., -1., 2.],[2., 0., 0.],[0., 1., -1.]])# 標準化縮放(按列處理,即每個特征) X_scaled = preprocessing.scale(X) print(X_scaled) # array([[0., -1.22, 1.33], # [1.22, 0., -0.26], # [-1.22, 1.22, -1.06]])# 處理后數據的均值和方差 print(X_scaled.mean(axis=0)) # array([0., 0., 0.])print(X_scaled.std(axis=0)) # array([1., 1., 1.])# 等價于這個計算過程(axis=0表示對列處理) print(X.mean(axis=0)) print(X.std(axis=0)) print((X - X.mean(axis=0))) print((X - X.mean(axis=0)) / X.std(axis=0))

**方法二:**采用StandardScaler類,可以保存訓練集中的參數(均值、方差)直接使用其對象轉換測試集數據

from sklearn import preprocessing import numpy as np """ 只求出訓練集的均值和方差,然后讓訓練集和測試集的X都減去這個均值然后除以方差。 均值和方差的計算沒有參考測試集。 """ X_train = np.array([[1., -1., 2.],[2., 0., 0.],[0., 1., -1.]]) X_test = np.array([[-1., 3., 0.], [2., 1., 1.]])scaler = preprocessing.StandardScaler() # fit這一步是為了得到訓練數據的mean、std等參數 scaler.fit(X_train) print(scaler) print(scaler.mean_) print(scaler.var_) # variance print(scaler.scale_) # std # 對訓練集進行標準化 X_train_scaled = scaler.transform(X_train) print(X_train_scaled) print(X_train_scaled.mean(axis=0)) print(X_train_scaled.std(axis=0))# 可以直接使用訓練集對測試集數據進行轉換 X_test_scaled = scaler.transform(X_test) print(X_test_scaled) # 因為使用的是訓練集的mean和std,所以測試集數據轉換后并不是正態分布 print(X_test_scaled.mean(axis=0)) print(X_test_scaled.std(axis=0)) # 對測試集的transform等價于這個計算過程(axis=0表示對列處理) print(X_train.mean(axis=0)) print(X_train.std(axis=0)) print((X_test - X_train.mean(axis=0)) / X_train.std(axis=0))

總結[ref2]:

在機器學習中,我們是從整體中采用抽樣的方式抽出訓練集,這意味著我們默認,這部分訓練集可以代替整體,也就是訓練集的期望就是整體的期望,測試集標準化的時候,它的期望采用的正是訓練集的期望.
所以StandardScaler()才是我們經常用的方式

也有人訓練和測試都使用scale方法,而且是在數據拼接之前。

總結

以上是生活随笔為你收集整理的sklearn_scaler的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。