常见的特征工程包括:
异常处理: 通过箱线图(或 3-Sigma)分析删除异常值; BOX-COX 转换(处理有偏分布); 长尾截断; 特征归一化/标准化: 标准化(转换为标准正态分布); 归一化(抓换到 [0,1] 区间); 针对幂律分布,可以采用公式:l o g ( 1 + x 1 + m e d i a n )
数据分桶: 等频分桶; 等距分桶; Best-KS 分桶(类似利用基尼指数进行二分类); 卡方分桶; 缺失值处理: 不处理(针对类似 XGBoost 等树模型); 删除(缺失数据太多); 插值补全,包括均值/中位数/众数/建模预测/多重插补/压缩感知补全/矩阵补全等; 分箱,缺失值一个箱; 特征构造: 构造统计量特征,报告计数、求和、比例、标准差等; 时间特征,包括相对时间和绝对时间,节假日,双休日等; 地理信息,包括分箱,分布编码等方法; 非线性变换,包括 log/ 平方/ 根号等; 特征组合,特征交叉; 仁者见仁,智者见智。 特征筛选 过滤式(filter):先对数据进行特征选择,然后在训练学习器,常见的方法有 Relief/方差选择发/相关系数法/卡方检验法/互信息法; 包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则,常见方法有 LVM(Las Vegas Wrapper) ; 嵌入式(embedding):结合过滤式和包裹式,学习器训练过程中自动进行了特征选择,常见的有 lasso 回归; 降维 PCA/ LDA/ ICA; 特征选择也是一种降维。
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from operator import itemgetter
%matplotlib inline
Train_data = pd.read_csv('D:/迅雷下载/二手车数据/used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv('D:/迅雷下载/二手车数据/used_car_test_20200313.csv', sep=' ')
print(Train_data.shape)
print(Test_data.shape)
(150000, 31)
(50000, 30)
Train_data.head()
Train_data.columns
Test_data.columns
Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)
#missing data
total = Train_data.isnull().sum().sort_values(ascending=False)
percent = (Train_data.isnull().sum()/Train_data.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
missing_data.head()
对缺失值进行处理,填充时一般考虑中位数,均值,众数等,在这里用众数填充
Train_data['fuelType'] = Train_data['fuelType'].fillna(Train_data['fuelType'].mode()[0])
Train_data['notRepairedDamage'] = Train_data['notRepairedDamage'].fillna(Train_data['notRepairedDamage'].mode()[0])
Train_data['gearbox'] = Train_data['gearbox'].fillna(Train_data['gearbox'].mode()[0])
Train_data['bodyType'] = Train_data['bodyType'].fillna(Train_data['bodyType'].mode()[0])
Train_data['model'] = Train_data['model'].fillna(Train_data['model'].mode()[0])
使用sklearn进行标签映射
from sklearn.preprocessing import LabelEncoder
cols = ('SaleID', 'name', 'regDate', 'model', 'brand',