学习目标
- 无量纲化:最值归一化、均值方差归一化及sklearn中的Scaler
- 缺失值处理
- 处理分类型特征:编码与哑变量
- 处理连续型特征:二值化与分段
- kNN算法优化与总结
无量纲化
概念及背景
无量纲化处理主要是用于消除不同特征之间由于量纲不同而造成的影响。以电商场景流失用户预测模型中用户总订单金额和用户上一次购物到当前的天数差这两个特征为例,天数通常是100以内的一个数值,而总订单金额则不然,这样在计算距离的时候,其结果会被总订单金额所主导。当然这不是我们期望看到的结果,故此我们需要消除量纲的影响,将这两个特征各自归一化,将其分别处理到[0,1]范围内。通常我们有两种方法做归一化处理(参考:https://mp.weixin.qq.com/s/RkenakI_DSXoMLwNNvUAAw):
- 最值归一化(normalization): 把所有数据映射到0-1之间。最值归一化的使用范围是特征的分布具有明显边界的(分数0~100分、灰度0~255),受outlier的影响比较大。
- 均值方差归一化(standardization): 把所有数据归一到均值为0方差为1的分布中。适用于数据中没有明显的边界,有可能存在极端数据值的情况。
代码实现
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=666