《opencv》4.2

如果我们要去了解一个人,那么最好能够拿到关于这个人的各种信息,如身高、体重、职业、爱好、性格、家庭环境等等。只有知道了这些信息,才能够对一个人做出正确的判断,这些信息就是这个人的特征。同样的,机器学习也是靠各种特征来识别目标,解决问题。
特征越多,越能帮助我们去认识目标对象,但是如果我们总是试图去获取所有特征,显然效率非常低。一是获取特征本身是要付出精力和时间,二是很多特征质量可能不高,拿来也用处不大。所以选择高质量的特征是非常必要的。在确定了特征后,接下来,需要我们用各种方法得到相关的数据,并对这些数据进行一些必要的处理。
这就是特征工程的两个阶段:特征选择和特征提取。

一些特征处理的方法:
1,特征标准化
标准化就是把数据缩放到拥有零均值和单位方差的过程,即方差为1.
二维数组:
x = np.array([[1,-2,2],[3,0,0],[0,1,-1]])
[[ 1 -2 2]
[ 3 0 0]
[ 0 1 -1]]
使用sciket-learn的preprocessing模块中的方法scale完成数据矩阵的标准化。
scale = preprocessing.scale(x)
结果:
[[-0.26726124 -1.33630621 1.33630621]
[ 1.33630621 0.26726124 -0.26726124]
[-1.06904497 1.06904497 -1.06904497]]
结果矩阵每一列的均值和方差:
[7.40148683e-17 0.00000000e+00 0.00000000e+00]
[1. 1. 1.]

2,特征归一化
归一化是缩放单个样本以使它们拥有单位范数的过程。用到的范数有两种:L1范数(曼哈顿距离)、L2范数(欧氏距离)
使用使用sciket-learn的preprocessing模块的normalize函数对数据进行归一化
矩阵使用上面的二维数组x
gy_l1 = preprocessing.normalize(x, norm=‘l1’)
gy_l2 = preprocessing.normalize(x, norm=‘l2’)
结果:
[[ 0.2 -0.4 0.4]
[ 1. 0. 0. ]
[ 0. 0.5 -0.5]]

[[ 0.33333333 -0.66666667 0.66666667]
[ 1. 0. 0. ]
[ 0. 0.70710678 -0.70710678]]

特征归一化针对的是样本,而特征的标准化则是针对特征。

除了上面介绍的两种数据处理方式外,还有特征缩放、特征二值化、确实数据处理等方法。这些方法都暂时点到即止,原因是没有实操经验很难理解这些特征工程中的内容,强行理解效率不高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值