Python机器学习常用算法模型的使用

传送门:自然语言处理Bert详解

逻辑回归

在这里插入图片描述

决策树

决策树模型的建树依据主要用到的是基尼系数的概念。基尼系数(gini)用于计算一个系统中的失序现象,即系统的混乱程度。基尼系数越高,系统的混乱程度就越高,建立决策树模型的目的就是降低系统的混乱程度,从而得到合适的数据分类效果。
在这里插入图片描述
在这里插入图片描述

  • 决策树分类模型代码
    在这里插入图片描述
    第2行代码中的X是特征变量,共有5个训练数据,每个数据有2个特征,如数据[1,2],它的第1个特征的数值为1,第2个特征的数值为2。
    第3行代码中的y是目标变量,共有2个类别——0和1。
    第4行代码引入模型并设置随机状态参数random_state为0,这里的0没有特殊含义,可换成其他数字。它是一个种子参数,可使每次运行结果一致,将在“补充知识点”讲解。
    第5行代码用fit()函数训练模型。
    第6行代码用predict()函数进行预测。

  • 回归决策树模型
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量,为一个连续变量;
    第4行代码引入模型,并设置决策树最大深度参数max_depth为2,随机状态参数random_state为0;第5行代码用fit()函数训练模型;
    第6行代码用predict()函数对数据[9,9]进行预测

补充知识点:random_state参数
决策树模型会优先选择使整个系统的基尼系数下降最大的划分方式来进行节点划分,但是有可能根据不同的划分方式获得的基尼系数下降是一样的,如果不设置random_state参数,就会导致程序每次运行时会获得不同的决策树。

K近邻算法
  • K近邻算法分类模型代码
    在这里插入图片描述
    第1行代码引入Scikit-Learn库中的K近邻算法分类模型并简写为KNN;
    第2行代码创建模型并设置邻近参数n_neighbors,也就是K值,这里设置其值为3,即选取最近的3个样本,如果不设置则取默认值5;
    第3行代码传入特征变量和目标变量进行模型训练。

  • K近邻算法回归模型代码
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量;
    第4行代码创建模型,并设置超参数n_neighbors(K值)为2;
    第5行代码用fit()函数训练模型;第6行代码用predict()函数进行预测。

随机森林
  • 随机森林分裂模型演示代码
    在这里插入图片描述
    第1行代码引入随机森林分类模型相关库RandomForestClassifier。
    第2行代码中的X是特征变量,共有2个特征。
    第3行代码中的y是目标变量,共有2个分类——0和1。
    第5行代码引入模型,并设置弱学习器的数量n_estimators为10,即共有10个决策树模型作为弱学习器;设置random_state为123,使得每次运行结果一致(如果不设置则可能出现每次预测结果不一样的情况,这是因为随机森林遵循“数据随机”和“特征随机”的基本原则)。
    第6行代码用fit()函数训练模型。

  • 随机森林回归模型演示代码
    在这里插入图片描述
    第1行代码引入随机森林分类模型相关库RandomForestClassifier。
    第2行代码中的X是特征变量,共有2个特征。
    第3行代码中的y是目标变量,共有2个分类——0和1。
    第5行代码引入模型,并设置弱学习器的数量n_estimators为10,即共有10个决策树模型作为弱学习器;设置random_state为123,使得每次运行结果一致(如果不设置则可能出现每次预测结果不一样的情况,这是因为随机森林遵循“数据随机”和“特征随机”的基本原则)。
    第6行代码用fit()函数训练模型。

参数说明
在这里插入图片描述
在这里插入图片描述

AdaBoost算法
  • 核心思想
    AdaBoost算法(Adaptive Boosting)是一种有效而实用的Boosting算法,它以一种高度自适应的方式按顺序训练弱学习器。针对分类问题,AdaBoost算法根据前一次的分类效果调整数据的权重,在上一个弱学习器中分类错误的样本的权重会在下一个弱学习器中增加,分类正确的样本的权重则相应减少,并且在每一轮迭代时会向模型加入一个新的弱学习器。不断重复调整权重和训练弱学习器,直到误分类数低于预设值或迭代次数达到指定最大值,最终得到一个强学习器。简单来说,AdaBoost算法的核心思想就是调整错误样本的权重,进而迭代升级。

  • AdaBoost分类模型演示代码
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量,有2个分类——0和1;
    第4行代码引入模型,并设置random_state参数为123(该数字没有特殊含义,可以换成其他数字),使得每次运行结果保持一致;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

  • AdaBoost回归模型演示代码
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量,为连续变量;
    第4行代码引入模型,并设置random_state参数为123(该数字没有特殊含义,可以换成其他数字),使得每次运行结果保持一致;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测。

GDBT算法

Gradient Boosting Decision Tree(梯度提升树)
AdaBoost算法根据分类效果调整权重并不断迭代,最终生成强学习器;GBDT算法则将损失函数的负梯度作为残差的近似值,不断使用残差迭代和拟合回归树,最终生成强学习器。简单来说,AdaBoost算法是调整权重,而GBDT算法则是拟合残差。

用Python求均方误差

用mean_squared_error()函数可以快速求得均方误差,代码如下。
在这里插入图片描述

  • GDBT分类模型代码演示
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量,有2个分类——0和1;
    第4行代码引入模型,并设置random_state参数为123(该数字没有特殊含义,可以换成其他数字),使得每次运行结果保持一致;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

  • GDBT回归模型代码演示
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量;
    第4行代码引入模型;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

机器学习神器:XGBoost与Light-GBM算法
  1. XGBoost算法
    XGBoost算法在某种程度上可以说是GBDT算法的改良版,两者在本质上都是利用了Boosting算法中拟合残差的思想。初始决策树的预测结果不完全准确,会产生一些残差,因此会用新的决策树来拟合该残差,新的决策树又会产生新的残差,这时再构造新的决策树来拟合新的残差……如此迭代下去,直至符合预先设定的条件为止。
  • XGBoost分类模型代码演示
    在这里插入图片描述
    第3行代码中的X是特征变量,共有2个特征,因为XGBoost分类模型的特征变量只支持array数组类型或DataFrame二维表格类型的数据,所以这里使用NumPy库的array()函数将list列表类型的数据转换为array数组类型的数据;
    第4行代码中的y是目标变量,共有2个类别——0和1;
    第5行代码引入模型;
    第6行代码用fit()函数训练模型;
    第7行代码用predict()函数进行预测

  • XGBoost回归模型代码演示
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量,为连续变量;
    第4行代码引入模型;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

  1. LIghtGBM
    LightGBM和XGBoost算法一样是对GBDT算法的高效实现,在原理上与GBDT算法和XGBoost算法类似,都采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。
  • LightGBM分类模型代码演示
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量;
    第4行代码引入模型;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

  • LightGBM回归模型代码演示
    在这里插入图片描述
    第2行代码中的X是特征变量,共有2个特征;
    第3行代码中的y是目标变量;
    第4行代码引入模型;
    第5行代码用fit()函数训练模型;
    第6行代码用predict()函数进行预测

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值