原 Sklearn中的StratifiedKFold与stacking模型的融合方法

前言:由于在学习泰坦尼克预测的案例时,借用到了stacking的模型融合的方法,其中对StratifiedKFold的方法感到不是很理解,于是网上搜索了一些教程,特地记录如下,同时在文尾也会附上stacking的具体代码作为补充。
StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。
from sklearn.model_selection import StratifiedKFold
X = np.array([[1, 2, 3, 4],
              [11, 12, 13, 14],
              [21, 22, 23, 24],
              [31, 32, 33, 34],
              [41, 42, 43, 44],
              [51, 52, 53, 54],
              [61, 62, 63, 64],
              [71, 72, 73, 74]])
 
y = np.array([1, 1, 0, 0, 1, 1, 0, 0])
 
stratified_folder = StratifiedKFold(n_splits=4, random_state=0, shuffle=False)
for train_index, test_index in stratified_folder.split(X, y):
    print("Stratified Train Index:", train_index)
    print("Stratified Test Index:", test_index)
    print("Stratified y_train:", y[train_index])
    print("Stratified y_test:", y[test_index],'\n')
 
结果:
Stratified Train Index: [1 3 4 5 6 7]
Stratified Test Index: [0 2]
Stratified y_train: [1 0 1 1 0 0]
Stratified y_test: [1 0] 
 
Stratified Train Index: [0 2 4 5 6 7]
Stratified Test Index: [1 3]
Stratified y_train: [1 0 1 1 0 0]
Stratified y_test: [1 0] 
 
Stratified Train Index: [0 1 2 3 5 7]
Stratified Test Index: [4 6]
Stratified y_train: [1 1 0 0 1 0]
Stratified y_test: [1 0] 
 
Stratified Train Index: [0 1 2 3 4 6]
Stratified Test Index: [5 7]
Stratified y_train: [1 1 0 0 1 0]
Stratified y_test: [1 0] 
从这里可以看出, StratifiedKFold返回值是对应元素的索引,如果要获取对应的元素可以借用索引的性质,来获取。
(注:当然分组还有其他的的方式,可以查看官方帮助文档)

模型融合stacking的思路
 关于stacking的方法,我在以前也做过具体的总结,但是却没有相应的代码支持,这里在学习一遍。也可参考文档
       当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
对于不是stacking的方法:
训练集输入->若干弱学习器-->若干弱学习器输出-->平均法投票法得到预测输出。
对于stacking方法:
训练集输入->若干弱学习器1-->若干学习器1输出(所有的输出作为学习器2的输入特征)-->次级学习器2-->学习器2输出即为预测输出。
对于stacking,次级学习器的输入不能理解为原样本的类别输出,而仅仅只是初级学习器的预测输出,这个输出对于次级学习器来说仅仅只是一个特征而已,至于是不是类别什么的并不重要。
从原理上讲,可以理解为初级学习器对原样本的特征进行了梳理,得到了更清晰的特征,方便次级学习器更容易的去学习清晰特征和类别输出的关系。
本文来自CSDN 博客,全文地址请点击:https://blog.csdn.net/qq_20412595/article/details/82561685?utm_source

猜你喜欢

转载自blog.csdn.net/weixin_41643439/article/details/86565830
今日推荐