python机器学习-chapter2_10
•enumerate()用于同时返回索引和对应的值
list1 = ["这", "是", "一个", "测试"] for index, item in enumerate(list1): print index, item >>> 0 这 1 是 2 一个 3 测试
numpy.ravel()用于拉平数组
n = [[1, 2, 3], [4, 5, 6]] n.ravel() >>>[1, 2, 3, 4, 5, 6]
•随机森林:随机森林构造很多决策树,每棵树和其他树都略有不同,,但以不同的方式过拟合,对这些树的结果取平均值来降低过拟合
分类与回归:
分类:进行软投票。每个算法做出软预测,给出每个可能的输出标签的概率,对所有树的预测概率取平均值,将概率最大的类别作为预测结果
回归:算法对每棵树进行预测,对这些结果取平均值作为最终预测
随机森林中的随机化:①选择用于构造树的数据点(自助采样)②选择每次划分测试的特征
随机森林的重要参数:
♠n_estimators:森林中决策树的个数,越大越好
♠max_fearures:结点选择特征时,特征子集的大小。决定每棵树的随机性大小。
♠n_jobs:训练随机森林时所使用的CPU内核数,如n_job = -1,即使用所有内核
优点:
♠不需要反复调节参数就可以得到很好地结果
♠不需要对数据进行缩放
缺点:
♠可视化效果不好
♠对维度非常高的稀疏数据(例如文本数据),表现不好
•梯度提升机:通过合并多个决策树来构建一个更为强大模型,使用连续的方法构造树,每棵树都试图纠正前一棵树的错误。
梯度提升机的重要参数:
max_depth:每一棵树的最大深度,通常不超过5。
n_estimators:集成中树的个数,更多的树可以增加模型复杂度,与随机森林不同,此参数并不是越大越好,太大会导致过拟合。
learning_rate:学习率,控制每一颗树纠正前一棵树的强度,与n_estimators高度相关,当学习率低时,需要更多的树构建模型。
通常根据时间和内存的预算来选择合适的n_estimators,然后遍历learning_rate选择出最优的模型。
降低过拟合的方法:①限制最大深度②降低学习率
•随机森林与梯度提升机
一般先使用随机森林算法,随机森林的鲁棒性好。
在以下两种情况下考虑使用梯度提升:
①预测时间太长
②对机器学习模型精度的小数点第二位有要求