主要学习内容
异常处理:
删除异常值:箱线图;3-Sigma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16def outliers_proc(data, col_name, scale=3):
"""
用于清洗异常值,默认用 box_plot(scale=3)进行清洗
:param data: 接收 pandas 数据格式
:param col_name: pandas 列名
:param scale: 尺度
:return:
"""
def box_plot_outliers(data_ser, box_scale):
"""
利用箱线图去除异常值
:param data_ser: 接收 pandas.Series 数据格式
:param box_scale: 箱线图尺度,
:return:
"""
处理有偏分布:BOX-COX 转换
长尾截断
归一化/标准化:标准正态;[0,1]区间;幂律分布
1
2
3
4
5
6# 取 log,做归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
data['power'] = np.log(data['power'] + 1)
data['power'] = ((data['power'] - np.min(data['power'])) / (np.max(data['power']) - np.min(data['power'])))
data['power'].plot.hist()

数据分桶
优点:
离散后稀疏向量内积乘法运算速度更快,计算结果也方便存储,容易扩展;
离散后的特征对异常值更具鲁棒性
LR 属于广义线性模型,表达能力有限,经过离散化后,每个变量有单独的权重,相当于引入了非线性,能够提升模型的表达能力,加大拟合;
离散后特征可以进行特征交叉,提升表达能力
特征离散后模型更稳定
缺失值处理:
- 不处理(针对类似 XGBoost 等树模型);
- 删除(缺失太多)
- 插值补全
- 分箱,缺失值一个箱
特征构造
特征筛选:
过滤式(filter):先对数据进行特征选择,然后在训练学习器,常见的方法有 Relief/方差选择发/相关系 数法/卡方检验法/互信息法;

包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则,常见方法有 LVM(Las Vegas Wrapper) ;
嵌入式(embedding):结合过滤式和包裹式,学习器训练过程中自动进行了特征选择,常见的有 lasso 回归;
数据降维