机器学习特征工程与KNN详细探讨

1.什么是特征工程

特征在机器学习以及数据挖掘的过程中是最为重要的一个指标,在美团机器学习实践中曾探讨,数据和特征决定了机器学习的上限,而模型和算法只是无限的逼近这个上限。而在实际的工作中,根据业务部门或者甲方提出的需求,通常情况下数据都是给定的,那么作为一名工程师,我们只能够在有限的数据中根据实际情况来找到更多的特征,那么在这一过程中特征工程就应运而生。

2.数据归一化

在实际应用中,样本的不同特征的单位不同,会在求距离时造成很大的影响。比如在房屋价格分析中,房屋总价是400万和600万,这样在价格样本中就会差200万,而他们的面积可能是60和90,这样的均价样本差则为30,这样就导致结果会被总价所主导,因为面积的差距太小了,如果我们用百万作为单位,那么价格样本差就会变成2, 那么实际的模型又会被面积所主导。
我们发现,在量纲不同的情况下,以上的情况,不能反映样本中每一个特征的重要程度。这就需要数据归一化了。
一般来说,我们的解决方案是:把所有的数据都映射到同一个尺度(量纲)上。
一般来说,常用的数据归一化有两种:

  • 最值归一化:把所有数据映射到0-1之间。最值归一化的使用范围是特征的分布具有明显边界的(分数0~100分、灰度0~255),受outlier的影响比较大
    在这里插入图片描述
  • 均值方差归一化:把所有数据归一到均值为0方差为1的分布中。适用于数据中没有明显的边界,有可能存在极端数据值的情况.

在这里插入图片描述

2.1 最值归一化的实现

import numpy as np
# 创建100个随机数
x = np.random.randint(0,100,size=100)

# 最值归一化(向量)
# 最值归一化公式,映射到0,1之间
(x - np.min(x)) / (np.max(x) -  np.min(x))

# 最值归一化(矩阵)
# 0~100范围内的50*2的矩阵
X = np.random.randint(0,100,(50,2))
# 将矩阵改为浮点型
X = np.array(X, dtype=float)
# 最值归一化公式,对于每一个维度(列方向)进行归一化。
# X[:,0]第一列,第一个特征
X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值