x』 = (x - x_min) / (x_max - x_min)
歸一化後的資料取值區間為[0,1]
from sklearn.preprocessing import minmaxscaler
import numpy as np
data = np.random.uniform(0,
100,10)
[:, np.newaxis]
#隨機生成10個在區間[0,100)上服從均勻分布的資料
mm = minmaxscaler(
)mm_data = mm.fit_transform(data)
#fit_transform()先擬合資料,然後將其轉化為歸一化後的形式
origin_data = mm.inverse_transform(mm_data)
#將歸一化後的資料轉化為原始資料
print
('data is '
,data)
print
('after min max '
,mm_data)
print
('origin data is '
,origin_data)
x』 = (x - μ)/σ
標準化後的資料服從正態分佈
from matplotlib import gridspec
import numpy as np
import matplotlib.pyplot as plt
cps = np.random.random_integers(0, 100, (100, 2)) #生成100行2列在區間[0,100]上的離散整數
ss = standardscaler()
std_cps = ss.fit_transform(cps) #fit_transform()先擬合資料,然後將其轉化為標準形式
gs = gridspec.gridspec(5,5) #matplotlib.gridspec.gridspec類用於指定放置子圖的網格的幾何形狀,行數和列數
fig = plt.figure()
ax1 = fig.add_subplot(gs[0:2, 1:4]) #gs[0:2, 1:4]表示這個圖佔第1、2行和第2、3、4列
ax2 = fig.add_subplot(gs[3:5, 1:4]) #gs[3:5, 1:4]表示這個圖佔第4、5行和第2、3、4列
ax1.scatter(cps[:, 0], cps[:, 1]) #繪製未標準化的散點圖
ax2.scatter(std_cps[:, 0], std_cps[:, 1]) #繪製標準化後的散點圖
plt.show()
標準化前後資料生成散點圖對比
改善過擬合
x =[[
1,-1
,2],
[2,0
,0],
[0,1
,-1]
]# 使用l2正則化
from sklearn.preprocessing import normalize
l2 = normalize(x, norm=
'l2'
)print
('l2:'
, l2)
# 使用l1正則化
from sklearn.preprocessing import normalizer
normalizerl1 = normalizer(norm=
'l1'
)l1 = normalizerl1.fit_transform(x)
print
('l1:'
, l1)
歸一化 標準化 正則化
無量綱化使不同規格的資料轉換到同一規格。常用的無量綱化方法有標準化和區間縮放法。標準化的前提是特徵值服從正態分佈,標準化後,其轉換成標準正態分佈 區間縮放法利用了邊界值資訊,將特徵的取值區間縮放到某個特點的範圍,例如 0,1 等。標準化的前提是特徵值服從正態分佈,標準化後,其轉換成標準正態分佈 z ...
歸一化 標準化 正則化
我們經常將歸一化和標準化弄混淆,下面簡單描述一下他們之間的差異 歸一化的目標是找到某種對映關係,將原資料對映到 a,b a,b 區間上。一般a,b a,b會取 1 1 0,1 1,1 0,1 這些組合 a b 一般有兩種應用場景 常用min max normalization 用大數定理將資料轉化為...
歸一化,標準化與正則化
歸一化 resaling 一般是將資料對映到指定的範圍,用於去除不同維度放入量綱以及量綱單位。常見的對映範圍有 0,1 和 1,1 最常見的歸一化方法就是min max 歸一化 最常見的標準化方法 z score 標準化。其中 是樣本均值,是樣本資料的標準差。上圖則是乙個散點序列的標準化過程 原圖 ...