归一化
X
′
=
x
−
m
i
n
m
a
x
−
m
i
n
X' = { x-min \above{1pt} max-min}
X′=max−minx−min
X
′
′
=
X
′
∗
(
m
a
−
m
i
)
+
m
i
X'' = X' * (ma-mi) + mi
X′′=X′∗(ma−mi)+mi
标准化
X
′
=
x
−
m
e
a
n
s
t
d
X' = { x-mean \above{1pt} std}
X′=stdx−mean
ps:
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
if __name__ == '__main__':
# 初始化数据
columns = ['点赞', '投币', '收藏']
data = [
[1, 5, 12],
[13, 2, 5],
[9, 9, 6],
[2, 5, 0]
]
data = pd.DataFrame(data=data, columns=columns)
print(data)
# 点赞 投币 收藏
# 0 1 5 12
# 1 13 2 5
# 2 9 9 6
# 3 2 5 0
# 定义缩放范围
min_scaler, max_scaler = 0, 1
# 初始化缩放器
scaler = MinMaxScaler(feature_range=(min_scaler, max_scaler))
# 执行归一化
data_minmax = scaler.fit_transform(data[columns])
print(data_minmax)
# [[0. 0.42857143 1. ]
# [1. 0. 0.41666667]
# [0.66666667 1. 0.5 ]
# [0.08333333 0.42857143 0. ]]
from sklearn.preprocessing import StandardScaler
import pandas as pd
if __name__ == '__main__':
# 初始化数据
columns = ['点赞', '投币', '收藏']
data = [
[1, 5, 12],
[13, 2, 5],
[9, 9, 6],
[2, 5, 0]
]
data = pd.DataFrame(data=data, columns=columns)
print(data)
# 点赞 投币 收藏
# 0 1 5 12
# 1 13 2 5
# 2 9 9 6
# 3 2 5 0
scaler = StandardScaler(with_mean=0, with_std=1)
# 执行标准化【均值为0标准差为1】
data_standard = scaler.fit_transform(data[columns])
print(data_standard )
# [[-1.05662467 -0.10050378 1.46552595]
# [ 1.35851743 -1.30654916 -0.17586311]
# [ 0.55347007 1.50755672 0.05862104]
# [-0.85536283 -0.10050378 -1.34828388]]
归一化与标准化都是对数据的特征进行缩放,二者的区别是:
在需要进行特征缩放的数据集上 尽量采用标准化 而不是归一化去解决问题(另外还有一点需要特别注意,要把训练集和测试集分开后再分别标准化,否则会将测试集的信息引入到训练集中从而影响训练结果)