python归一化与标准化20200911

特征工程

将原始数据转化为更好的代表预测模型的潜在问题的特征的过程,从而提高了未知数据的预测准确性,数据和特征决定了机器学习的上限, 而模型和算法只是逼近这上限而已。

安装sklearn

安装顺序:numpy / scipy / matplotlib / scikit-learn
pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple


from sklearn.preprocessing import MinMaxScaler
import numpy as np

#实例化对象
mm = MinMaxScaler()

arr = np.array([
    [90,2,10,40],
    [60,4,15,45],
    [70,3,13,46]
])

#print(arr)
#按列:归一化公司x_=(x-min)/(max-min)
#最大值就是1,最小值就是0
# 归一化的缺点,如果有异常值出现就会有误差
# 归一化的条件: 针对误差很小的数据
data = mm.fit_transform(arr)
print('归一化之后的数据:\n',data)
'''
归一化之后的数据(数据映射到0到1之间):
 [[1.         0.         0.         0.        ]
 [0.         1.         1.         0.83333333]
 [0.33333333 0.5        0.6        1.        ]]
'''
#还原数据
data = mm.inverse_transform(data)
print('原始数据:\n',data)
'''
原始数据:
 [[90.  2. 10. 40.]
 [60.  4. 15. 45.]
 [70.  3. 13. 46.]]
'''

# 针对异常值比较多,可以采用标准化
from sklearn.preprocessing import StandardScaler

#打印分隔符
print('-'*100)

#标准化公式:x_ = (x-mean)/var

std = StandardScaler()
#标准化
data = std.fit_transform(arr)
print('每列平均值:',std.mean_)
print('每列的标准差:',std.var_)

print('标准化之后的数据:\n',data)
'''
每列平均值: [73.33333333  3.         12.66666667 43.66666667]
每列的标准差: [155.55555556   0.66666667   4.22222222   6.88888889]
标准化之后的数据:
 [[ 1.33630621 -1.22474487 -1.29777137 -1.3970014 ]
 [-1.06904497  1.22474487  1.13554995  0.50800051]
 [-0.26726124  0.          0.16222142  0.88900089]]

'''

猜你喜欢

转载自blog.csdn.net/Narutolxy/article/details/108517741
今日推荐