1、集成算法
1)集成算法考虑多个评估器的结果,汇总获取更好的分类、回归表现
2)三种集成算法:装袋法bagging(模型独立),提升法boosting(模型相关),stacking
3)随机森林是一种bagging集成算法,比决策树的效果好很多
一、 4个参数
1、n_estimators:森林中树木的数量
1)越大往往越好,但计算量越大,达到一定值精确性波动,一般在0-200内选
2)单个决策树准确度越高,随机森林的准确度也会越高
2、random_state
1)随机森林中的random_state控制的是生成森林的模式,设成固定值生成一组固定的树
2)决策树中的random_state控制随机选择特征分支
3)随机性越大,bagging效果一般越好,因此一般不设置,若追求稳定性可设置成固定值
3、bootstrap、oob_score
1)bootstrap默认为True,控制有放回的随机抽样
2)oob_score默认为False,设置为True表示希望用袋外数据测试模型,此时训练函数中放入完整数据(不用划分训练集、测试集)
二、重要属性
1、estimators_,查看森林中树的状况
.estimators[num]取出一棵树
2、oob_score_,查看在袋外数据上测试结果
3、feature_importance_查看特征重要性(用zip把特征重要性和特征名连起来,易于观察哪一个特征更为重要)
三、重要接口
1、4个常用接口:apply(返回测试集中每一个样本在每一棵树中叶子节点的索引;需要画图或需要提取单独叶子节点时使用)、fit、predict(返回对测试集预测的标签)、score
2、predict_proba:
1)返回每个测试样本被分到每一类标签的概率,标签几类,返回几个
四、其它
1、“字符串:{}”.format()方法,format后面的内容就是大括号中的内容
2、sklearn特征和标签分开导入
3、train_test_split有随机性,因此采用交叉验证在不同测试集和训练集上验证,交叉验证导入完整的特征矩阵和标签
4、list.index(object)会返回对象object在列表中的索引
1、参数criterion取值不同(与决策树部分相同)
1)“mse”:回归树中,MSE是分支质量衡量指标,也是回归树回归质量衡量指标
2)“friedman_mse”
3)“mae”
2、模型衡量指标不同:R²或MSE(常用)
3、常用接口apply, predict, fit, score,没有predict_proba
注:如何打印sklearn模型评估指标列表?
import sklearn
sorted(skl## 标题earn.metrics.SCORERS.keys())
1、sklearn.impute.SimpleImputer专门用来填补缺失值
SimpleImputer(missing_value=np.nan,strategy=“mean”)第一个值填空值是怎么表示的,有时为0
2、波士顿房价数据集,标签连续,回归
3、np.floor向下取整,返回.0形式的浮点数
4、怎么提前预防小数的出现?int(np.floor
5、np.random.randint(下限,上限,n) 在下限和上限之间取出n个整数,第一个值不填默认为0
6、np.random.choice,随机抽取不重复的随机数,可以使数据更加分散,不会集中在某些行(取数据量小于样本量时使用,本例中n<506)
missing_samples=rng.choice(n_samples,n_missing_samples,replace=False),replace=False表示不要重复
7、如何将矩阵转化成表?x_missing=pd.DataFrame(x_missing)
8、fit_transform(),训练+导出,相当于fit+predict
9、isnull()只能在df中用,如果使用需要转化
10、df.isnull().sum()确认有无缺失值,有缺失值返回的数比0大,True=1,False=0
11、如何使用算法填充缺失值?
特征矩阵和标签有某种联系,可以交换
新特征矩阵,在填补列非缺失行:x_train
新特征矩阵,在填补列缺失行:x_train
特征矩阵填补列不缺失值:y_train
特征矩阵填补列缺失值:需要预测的y_test(核心思想:把选中列看成标签列)
(这种做法适用于某一列特征大量缺失,若多列缺失,遍历特征,从缺失最少的列填补,填补其中一列时,先将其它特征缺失值用0代替)
12、np.argsort(X)是将X中的元素从小到大排序,并返回索引
np.sort(X)将X从小到大排序,但没有索引
13、pd.concat()
第一个参数:需要连接的所有对象用列表包起来
第二个参数:axis=1左右相连
14、如何用列表打开zip对象?
[*zip([“x_full”,“x_missing_mean”,“x_missing_0”,“x_missing_reg”],mse)]
15、如何画条形图?
plt.plot.bar(x轴,y轴)画条形图,plt.plot.barh(y轴,x轴)把条形图横过来