缺失值处理
可以考虑把缺失值填入众数或平均数。如果可以找出简单的聚类标准,也可以用聚类平均数取代,例如同一个区域的房价。
去掉无用属性
有些属性没什么意义,去掉可以减少干扰,降低运算量。
可以画一个关联性分析的热点图,看看有没有属性关联度过高(越接近1),可以去掉冗余。
sns.heatmap(train.astype(float).corr(),linewidths=0.1,vmax=1.0,
square=True, cmap=colormap, linecolor='white', annot=True)提取新属性
有时候,有些原始属性提取是非值,或者做某种数学运算,可以得出一个符合逻辑、更好学习的新属性。
对于一些数值,如果划分成区间,训练复杂度会降低许多。等分是比较粗糙的做法,可以人工分析数据特点,做不等分。例如按儿童、青年、中年、老年来划分年龄,按有等级特征的区间来划分费用。
| 特征 | pd.cut() | pd.qcut() |
|---|---|---|
| 划分依据 | 按「数值区间」均分 | 按「样本数量」均分 |
| 区间宽度 | 每个区间宽度相等 | 区间宽度可能不等 |
| 样本分布 | 各区间样本数可能差异大 | 各区间样本数基本相等 |
| 例子(5 组年龄) | 0-16、16-32…(等宽) | 0-12、12-28、28-45…(不等宽) |
| 适用场景 | 想按固定范围分组(如年龄段) | 想让每组样本数均衡(建模) |
集成(ensembling)学习
综合多种分类方法对分类结果做投票。具体地,把训练集进一步分成n份,把(n-1)/n作为子分类方法的训练集,把1/n作为测试集。一些常见的分类方法:
- Random Forest classifier
- Extra Trees classifier
- AdaBoost classifer
- Gradient Boosting classifer
- Support Vector Machine

评论