集成学习算法

1 集成学习的含义

 集成学习是将多个基学习器进行组合,从而来实现比单一学习器更显著的学习性能。
(多数基学习器共同判断得到集成效果)
在这里插入图片描述

集成学习代表

  • bagging方法:经典的随机森林
  • boosting方法:典型的Xgboost
  • stacking方法堆叠模型

集成学习的应用

  1. 分类问题:0 or 1
  2. 回归问题:概率平均
  3. 特征选取:选取合适的特征,使用集成学习来判断
    。。。。。。

Bagging之随机森林

1.什么是随机森林?

在这里插入图片描述
如上图所示:由不同的属性的决策树构成,最终决策是最后的结果。

2 随机森林的特点

  1. 数据的采样应该随机
  2. 在所有的特征中应该随机选取特征
  3. 基分类器为决策树

3 bagging随机森林生成步骤

  1. 首先对原始的数据集进行随机的选取采样
  2. 其次再对特征值进行随机的训练
  3. 最后进行分类选择使所有的决策树不一样

在这里插入图片描述

2 随机森林的优缺点

优点:

  1. 准确率高
  2. 随机性的引入,使得随机森林不容易过拟合
  3. 随机性的引入,即使训练集出现噪音也只是单个决策树,整理综合抗干扰强
  4. 可以处理高维数据,不需要特征选取
  5. 每棵决策树相对独立,容易实现并行计算

缺点:

  1. 当决策树过多时开销较大
  2. 随机森林有部分地方不好解释

3 API的介绍

参数说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 随机森林垃圾邮件的判断

题目前提

对邮件里面的内容进行特征单词提取,分别统计这些单词出现的次数,以及间断大写字母序列的平均长度和电子邮件中大写字母的总数等等…因素最后通过label标签为1就是垃圾邮件建立预测模型


import pandas as pd


#读取文件数据
df = pd.read_csv('spam.csv')

#对数据集进行划分,一部分作为训练集,一部分作为测试集
from sklearn.model_selection import train_test_split
#数据切割
x = df.iloc[:,:-1]
y = df.iloc[:,-1]

#划分训练集样本,测试集样本。
# test_size=0.2百分之二十的数据测试,
#random_state=100随机种子的值
X_train,X_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=100)



#进行预测分析
"""
n_estimators:决策树的个数
max_features:特征的个数
此处可以根据需要设置每棵决策树的深度以及最小叶子节点的样本数等
"""
from sklearn.ensemble import  RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100,max_features=0.8,random_state=0)
#训练样本集
rf.fit(X_train, y_train)

#预测训练集的样本
train_predict = rf.predict(X_train)
#预测测试样本
test_predict = rf.predict(X_test)


"""
训练结果可视化
"""
from sklearn import metrics
#混淆矩阵
print(metrics.classification_report(y_train,train_predict))

#可视化混淆矩阵
def cm_plot(y,py):
    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt


    cm = confusion_matrix(y,py)
    plt.matshow(cm,cmap=plt.cm.Blues)
    plt.colorbar()
    for x in range(len(cm)):
        for y in range(len(cm)):
            plt.annotate(cm[x,y],xy=(y,x),horizontalalignment='center',verticalalignment='center')
    plt.xlabel('Prediction data')
    plt.ylabel('Ture data')
    return plt

#展示训练样本的预测情况
# cm_plot(y_train,train_predict).show()

#展现测试集的预测情况
# cm_plot(y_test,test_predict).show()

"""
找到最重要的影响因素
"""
#设置中文
from pylab import mpl
#设置中文字体
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']


importances = rf.feature_importances_ #各个因素的权重
im = pd.DataFrame(importances)
cols = df.columns.values.tolist() #得到各个因素的名字
cols = cols[0:-1] #最后一个是预测结果不需要
im['cols'] = cols #数据相对应
im.sort_values(by=[0], ascending=False)[:10] #通过第一列的数据降序,只有前10个

import matplotlib.pyplot as plt

index = range(len(im))
plt.yticks(index,im.cols)
plt.bar(index,im[0])
plt.show()

效果演示

在这里插入图片描述
训练集的预测效果
在这里插入图片描述测试集的预测效果
在这里插入图片描述

5数据链接

链接:https://pan.baidu.com/s/1SQHaGe3p8DbpyIzQwDiS5g?pwd=mfpn
提取码:mfpn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值