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

文章目录

  • 零、导读
  • 一、数据集的预处理(鸢尾花数据集为例)
  • 二、八大传统分类算法
    • 2.1 K邻近
    • 2.2 朴素贝叶斯
    • 2.3 决策树
    • 2.4 逻辑回归
    • 2.5 支持向量机
    • 2.6 集成方法
      • 2.6.1 随机森林
      • 2.6.2 Adaboost
      • 2.6.3 梯度提升树GBDT
  • 三、大杀器
    • [1] xgboost
    • [2] lightgbm
    • [3] stacking
    • [4]神经网络
  • 四、总结

零、导读

深度之眼(二十三)——Python:Sklearn库_第1张图片
scikit-learn库是当今最流行的机器学习算法库之一
可用来解决分类与回归问题
本章以鸢尾花数据集为例,简单了解八大传统机器学习分类算法的sk-learn实现
欲深入了解传统机器算法的原理和公式推导,请继续学习《统计学习方法》或《西瓜书》

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

(1)下载数据集

iris = sns.load_dataset("iris")
iris.head()

深度之眼(二十三)——Python:Sklearn库_第2张图片
(2)查看数据集
深度之眼(二十三)——Python:Sklearn库_第3张图片
深度之眼(二十三)——Python:Sklearn库_第4张图片

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

深度之眼(二十三)——Python:Sklearn库_第5张图片
(3)标签清洗

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

深度之眼(二十三)——Python:Sklearn库_第6张图片
(4)标签编码

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
iris_sip["species"] = encoder.fit_transform(iris_sip["species"])
iris_sip

深度之眼(二十三)——Python:Sklearn库_第7张图片

(5)数据集的标准化
深度之眼(二十三)——Python:Sklearn库_第8张图片
(6)构建训练集和测试集
80% 是训练集
20% 是测试集
将x和y分开
深度之眼(二十三)——Python:Sklearn库_第9张图片

二、八大传统分类算法

2.1 K邻近

[1]基本思想
与待预测点最近的训练数据集中的k个邻居
把k个近邻中最常见的类别预测为带预测点的类别
深度之眼(二十三)——Python:Sklearn库_第10张图片

深度之眼(二十三)——Python:Sklearn库_第11张图片
深度之眼(二十三)——Python:Sklearn库_第12张图片
(5)可视化
深度之眼(二十三)——Python:Sklearn库_第13张图片

2.2 朴素贝叶斯

[1]基本思想
当X=(x1, x2)发生的时候,哪一一个yk发生的概率最大
深度之眼(二十三)——Python:Sklearn库_第14张图片
可视化
深度之眼(二十三)——Python:Sklearn库_第15张图片

2.3 决策树

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

如果全部分开,会过拟合

深度之眼(二十三)——Python:Sklearn库_第16张图片
可视化
深度之眼(二十三)——Python:Sklearn库_第17张图片

2.4 逻辑回归

[1]基本思想
一种解释:
训练:通过一个映射方式,将特征X= (x1, x2)映射成P(y=ck),求使得所有概率之积最大化的映射方式里的参数
预测:计算p(y=ck) 取概率最大的那个类别作为预测对象的分类
深度之眼(二十三)——Python:Sklearn库_第18张图片
深度之眼(二十三)——Python:Sklearn库_第19张图片

2.5 支持向量机

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

深度之眼(二十三)——Python:Sklearn库_第20张图片
深度之眼(二十三)——Python:Sklearn库_第21张图片
深度之眼(二十三)——Python:Sklearn库_第22张图片

2.6 集成方法

2.6.1 随机森林

[1]基本思想
训练集m,有放回的随机抽取m个数据,构成一组,共抽取n组采样集
n组采样集训练得到n个弱分类器弱分类器-般用决策树或神经网络
将n个弱分类器进行组合得到强分类器
深度之眼(二十三)——Python:Sklearn库_第23张图片
方法跟上面一样

2.6.2 Adaboost

[1]基本思想
训练集m,用初始数据权重训练得到第一个弱分类器, 根据误差率计算弱分类器系数,更新数据的权重
使用新的权重训练得到第二个弱分类器,以此类推
根据各自系数,将所有弱分类器加权求和获得强分类器
深度之眼(二十三)——Python:Sklearn库_第24张图片
深度之眼(二十三)——Python:Sklearn库_第25张图片

2.6.3 梯度提升树GBDT

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

深度之眼(二十三)——Python:Sklearn库_第26张图片
深度之眼(二十三)——Python:Sklearn库_第27张图片

三、大杀器

[1] xgboost

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

[2] lightgbm

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

[3] stacking

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

[4]神经网络

自己看看网络文章吧

四、总结

深度之眼(二十三)——Python:Sklearn库_第28张图片

你可能感兴趣的:(深度之眼,数学建模,python,sklearn,机器学习)