• 深度之眼(二十三)——Python:Sklearn库


    零、导读

    在这里插入图片描述
    scikit-learn库是当今最流行的机器学习算法库之一
    可用来解决分类与回归问题
    本章以鸢尾花数据集为例,简单了解八大传统机器学习分类算法的sk-learn实现
    欲深入了解传统机器算法的原理和公式推导,请继续学习《统计学习方法》或《西瓜书》

    一、数据集的预处理(鸢尾花数据集为例)

    (1)下载数据集

    iris = sns.load_dataset("iris")
    iris.head()
    
    • 1
    • 2

    在这里插入图片描述
    (2)查看数据集
    在这里插入图片描述
    在这里插入图片描述

    sns.pairplot(data=iris,hue="species")
    
    • 1

    在这里插入图片描述
    (3)标签清洗

    iris_sip = iris.drop(["sepal_length","sepal_width"],axis=1)
    iris_sip.head()
    
    • 1
    • 2

    在这里插入图片描述
    (4)标签编码

    from sklearn.preprocessing import LabelEncoder
    encoder = LabelEncoder()
    iris_sip["species"] = encoder.fit_transform(iris_sip["species"])
    iris_sip
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    (5)数据集的标准化
    在这里插入图片描述
    (6)构建训练集和测试集
    80% 是训练集
    20% 是测试集
    将x和y分开
    在这里插入图片描述

    二、八大传统分类算法

    2.1 K邻近

    [1]基本思想
    与待预测点最近的训练数据集中的k个邻居
    把k个近邻中最常见的类别预测为带预测点的类别
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    (5)可视化
    在这里插入图片描述

    2.2 朴素贝叶斯

    [1]基本思想
    当X=(x1, x2)发生的时候,哪一一个yk发生的概率最大
    在这里插入图片描述
    可视化
    在这里插入图片描述

    2.3 决策树

    [1]基本思想
    CART算法:每次通过一个特征,将数据尽可能的分为纯净的两类,递归的分下去

    如果全部分开,会过拟合

    在这里插入图片描述
    可视化
    在这里插入图片描述

    2.4 逻辑回归

    [1]基本思想
    一种解释:
    训练:通过一个映射方式,将特征X= (x1, x2)映射成P(y=ck),求使得所有概率之积最大化的映射方式里的参数
    预测:计算p(y=ck) 取概率最大的那个类别作为预测对象的分类
    在这里插入图片描述
    在这里插入图片描述

    2.5 支持向量机

    [1]基本思想
    以二分类为例,假设数据可用完全分开:
    用一个超平面将两类数据完全分开,且最近点到平面的距离最大

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

    2.6 集成方法

    2.6.1 随机森林

    [1]基本思想
    训练集m,有放回的随机抽取m个数据,构成一组,共抽取n组采样集
    n组采样集训练得到n个弱分类器弱分类器-般用决策树或神经网络
    将n个弱分类器进行组合得到强分类器
    在这里插入图片描述
    方法跟上面一样

    2.6.2 Adaboost

    [1]基本思想
    训练集m,用初始数据权重训练得到第一个弱分类器, 根据误差率计算弱分类器系数,更新数据的权重
    使用新的权重训练得到第二个弱分类器,以此类推
    根据各自系数,将所有弱分类器加权求和获得强分类器
    在这里插入图片描述
    在这里插入图片描述

    2.6.3 梯度提升树GBDT

    [1]基本思想
    训练集m,获得第一个弱分类歇,获得残差,然后不断地拟合残差
    所有弱分类器相加得到强分类器

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

    三、大杀器

    [1] xgboost

    GBDT的损失函数只对误差部分做负梯度(- -阶泰勒)展开
    XGBoost损失函数对误差部分做二阶泰勒展开,更加准确,更快收敛

    [2] lightgbm

    微软:快速的,分布式的,高性能的基于决策树算法的梯度提升框架
    速度更快

    [3] stacking

    堆叠或者叫模型融合
    先建立几个简单的模型进行训练,第二级学习器会基于前级模型的预测结果进行再训练

    [4]神经网络

    自己看看网络文章吧

    四、总结

    在这里插入图片描述

  • 相关阅读:
    Docker Swarm 网络
    MAC-设置mysql开机自启动
    JSX基础语法
    Java核心篇,二十三种设计模式(十七),行为型——中介者模式
    Mybatis对数据加密解密(AES加解密)操作
    分享一个JS对象隐式转换的问题
    java考点之程序看iO流操作
    pytest之parametrize参数化
    处理Java异常的10个最佳实践
    【手写数据库toadb】SQL字符串如何被数据库认识? 词法语法分析基础原理,常用工具
  • 原文地址:https://blog.csdn.net/m0_52592798/article/details/126249340