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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据预处理之归一化

發(fā)布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据预处理之归一化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MATLAB 可直接調(diào)用函數(shù)mapminmax
示例:
%讀入矩陣A
A=xlsread(‘D:文件名.xlsx’);
%對矩陣歸一化
F=mapminmax(A);
%輸出歸一化后的矩陣F
xlswrite('D:新文件名‘,F)

https://blog.csdn.net/weixin_38706928/article/details/80329563
鏈接含代碼

目錄

歸一化

數(shù)據(jù)歸一化的背景介紹

MinMaxScaler:歸一到 [ 0,1 ]

MaxAbsScaler:歸一到 [ -1,1 ]

標(biāo)準(zhǔn)化

去均值,方差規(guī)模化

歸一化
數(shù)據(jù)歸一化的背景介紹
在之前做聚類分析的時候我們發(fā)現(xiàn),聚類的效果往往特別受其中一列數(shù)據(jù)的影響,使得原本應(yīng)該散布在二維平面圖上的點(diǎn),變成聚集在一條線上的點(diǎn),可想而知,其聚類效果肯定不理想。

左圖:為所有數(shù)據(jù)都?xì)w一化之后的聚類分析散點(diǎn)圖;

右圖:為其中一列是合同金額,并且沒有歸一化數(shù)據(jù)的散點(diǎn)圖;

歸一化方法有兩種形式,一種是把數(shù)變?yōu)?#xff08;0,1)之間的小數(shù),一種是把有量綱表達(dá)式變?yōu)闊o量綱表達(dá)式,成為純量。后者常見于微波之中,也就是電路分析、信號系統(tǒng)、電磁波傳輸?shù)?#xff0c;研究物理的人會比較熟悉。而像我們這些普通的數(shù)據(jù)分析師的日常工作中,不太會遇見需要?dú)w一化為無量綱表達(dá)式的情況,因此只討論歸一化到 [0,1] 的情況。

歸一化一般是把數(shù)據(jù)映射到 [ 0,1 ] ,但也有歸一到 [ -1,1 ] 的情況,兩種情況在Python中分別可以通過MinMaxScaler 或者 MaxAbsScaler方法來實(shí)現(xiàn)。

MinMaxScaler:歸一到 [ 0,1 ]
原理

從原理中我們注意到有一個axis=0,這表示MinMaxScaler方法默認(rèn)是對每一列做這樣的歸一化操作,這也比較符合實(shí)際應(yīng)用。

eg:將數(shù)據(jù)歸一到 [ 0,1 ]

from sklearn import preprocessing
import numpy as np

x = np.array([[3., -1., 2., 613.],
[2., 0., 0., 232],
[0., 1., -1., 113],
[1., 2., -3., 489]])

min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(x)
print(x_minmax)
運(yùn)行結(jié)果:

[[1. 0. 1. 1. ]
[0.66666667 0.33333333 0.6 0.238 ]
[0. 0.66666667 0.4 0. ]
[0.33333333 1. 0. 0.752 ]]

如果有新的測試數(shù)據(jù)進(jìn)來,也想做同樣的轉(zhuǎn)換,那么將新的測試數(shù)據(jù)添加到原數(shù)據(jù)末尾即可

from sklearn import preprocessing
import pandas as pd

min_max_scaler = preprocessing.MinMaxScaler()

x = ([[3., -1., 2., 613.],
[2., 0., 0., 232],
[0., 1., -1., 113],
[1., 2., -3., 489]])#原數(shù)據(jù)

y = [7., 1., -4., 987]#新的測試數(shù)據(jù)
x.append(y)#將y添加到x的末尾
print(‘x :\n’, x)
x_minmax = min_max_scaler.fit_transform(x)
print(‘x_minmax :\n’, x_minmax)
運(yùn)行結(jié)果:

x :
[[3.0, -1.0, 2.0, 613.0], [2.0, 0.0, 0.0, 232], [0.0, 1.0, -1.0, 113], [1.0, 2.0, -3.0, 489], [7.0, 1.0, -4.0, 987]]
x_minmax :
[[0.42857143 0. 1. 0.57208238]
[0.28571429 0.33333333 0.66666667 0.13615561]
[0. 0.66666667 0.5 0. ]
[0.14285714 1. 0.16666667 0.43020595]
[1. 0.66666667 0. 1. ]]
每一列特征中的最小值變成了0,最大值變成了1.

MaxAbsScaler:歸一到 [ -1,1 ]
原理與MinMaxScaler相似,

from sklearn import preprocessing
import numpy as np

x = np.array([[3., -1., 2., 613.],
[2., 0., 0., 232],
[0., 1., -1., 113],
[1., 2., -3., 489]])
max_abs_scaler = preprocessing.MaxAbsScaler()
x_train_maxsbs = max_abs_scaler.fit_transform(x)
x_train_maxsbs
運(yùn)行結(jié)果:

array([[ 1. , -0.5 , 0.66666667, 1. ],
[ 0.66666667, 0. , 0. , 0.37846656],
[ 0. , 0.5 , -0.33333333, 0.18433931],
[ 0.33333333, 1. , -1. , 0.79771615]])
如果有新的測試數(shù)據(jù)進(jìn)來,和原來的表一起進(jìn)行歸一化:

from sklearn import preprocessing
import pandas as pd

max_abs_scaler = preprocessing.MaxAbsScaler()

x = ([[3., -1., 2., 613.],
[2., 0., 0., 232],
[0., 1., -1., 113],
[1., 2., -3., 489]])#原數(shù)據(jù)

y = [5., 1., -4., 888]#新的測試數(shù)據(jù)
x.append(y)
print(‘x :\n’, x)
x_train_maxsbs = max_abs_scaler.fit_transform(x)
print(‘x_train_maxsbs :\n’, x_train_maxsbs)
運(yùn)行結(jié)果:

x :
[[3.0, -1.0, 2.0, 613.0], [2.0, 0.0, 0.0, 232], [0.0, 1.0, -1.0, 113], [1.0, 2.0, -3.0, 489], [5.0, 1.0, -4.0, 888]]
x_train_maxsbs :
[[ 0.6 -0.5 0.5 0.69031532]
[ 0.4 0. 0. 0.26126126]
[ 0. 0.5 -0.25 0.12725225]
[ 0.2 1. -0.75 0.55067568]
[ 1. 0.5 -1. 1. ]]


作者:黃小技術(shù)包搞分析
來源:CSDN
原文:https://blog.csdn.net/weixin_40683253/article/details/81508321
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

總結(jié)

以上是生活随笔為你收集整理的数据预处理之归一化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。