标准化、归一化、正则化

1.归一化

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)

2.标准化

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()

标准化前后数据生成散点图对比
在这里插入图片描述

3.正则化

改善过拟合

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值