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