零基础学机器学习(基于Python Scikit-learn)

机器学习

第二章——算法


目录


前言

本章内容为机器学习系列第二章,主要为机器学习的一些算法基础,查看第一章内容请转到>>>零基础学机器学习(基于Python Scikit-learn) 第一章


五、机器学习概述

5.1机器学习开发流程

零基础学机器学习(基于Python Scikit-learn)
机器学习模型是什么?

  • 通过一种映射关系将输入值到输出值

5.2机器学习算法分类

5.2.1监督学习和无监督学习

  • 监督学习
    分类: k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
    回归: 线性回归、岭回归
    标注: 隐马尔可夫模型
  • 无监督学习
    聚类: k-means
    零基础学机器学习(基于Python Scikit-learn)
    监督学习(Supervised learning),可以由输入数据中学到或建立一个模型,并依此模式推测新的结果。输入数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值(称为回归),或是输出是有限个离散值(称作分类)。
    无监督学习(Supervised learning),可以由输入数据中学到或建立一个模型,并依此模式推测新的结果。输入数据是由输入特征值所组成。

5.2.2分类问题

概念: 分类是监督学习的一个核心问题,在监督学习中,当输出变量取有限个离散值时,预测问题变成为分类问题。最基础的便是二分类问题,即判断是非,从两个类别中选择一个作为预测结果;

分类在于根据其特性将数据“分门别类”,所以在许多领域都有广泛的应用

  • 在银行业务中,构建一个客户分类模型,按客户按照贷款风险的大小进行分类
  • 图像处理中,分类可以用来检测图像中是否有人脸出现,动物类别等
  • 手写识别中,分类可以用于识别手写的数字
  • 文本分类,这里的文本可以是新闻报道、网页、电子邮件、学术论文

5.2.3回归问题

概念: 回归是监督学习的另一个重要问题。回归用于预测输入变量和输出变量之间的关系,输出是连续型的值。

回归在多领域也有广泛的应用

  • 房价预测,根据某地历史房价数据,进行一个预测
  • 金融信息,每日股票走向

- - - >>>返回目录<<< - - -

六、数据集与估计器

6.1数据集划分

机器学习一般的数据集会划分为两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效
  • 一般训练集:测试集=7:3或8:2

6.2sklearn数据集接口

sklearn数据集划分API: sklearn.model_selection.train_test_split

scikit-learn数据集API语法:

  • sklearn.datasets
    加载获取流行数据集
  • datasets.load_*()
    获取小规模数据集,数据包含在datasets里
  • datasets.fetch_*(data_home=None)
    获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是~/scikit_learn_data/

获取数据集返回的类型:

  • load和fetch返回的数据类型datasets.base.Bunch(字典格式)
  • data:特征数据数组,是 [n_samples * n_features] 的二维numpy.ndarray 数组
  • target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
  • DESCR:数据描述
  • feature_names:特征名,新闻数据,手写数字、回归数据集没有
  • target_names:标签名,回归数据集没有

示例代码:

from sklearn.datasets import load_iris #鸢尾花数据集
li = load_iris()
print("获取特征值")
print(li.data)
print("目标值")
print(li.target)
print(li.DESCR)

6.3sklearn分类、回归数据集

数据集进行分割:

  • sklearn.model_selection.train_test_split(*arrays, **options)
    x 数据集的特征值
    y 数据集的标签值
  • test_size 测试集的大小,一般为float
  • random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
  • return 训练集特征值,测试集特征值,训练标签,测试标签(默认随机取)

用于分类的大数据集:

  • sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
  • subset: ‘train’或者’test’,‘all’,可选,选择要加载的数据集训练集的“训练”,测试集的“测试”,两者的“全部”
  • datasets.clear_data_home(data_home=None)
    清除目录下的数据

sklearn回归数据集:

  • sklearn.datasets.load_boston()
    加载并返回波士顿房价数据集
  • sklearn.datasets.load_diabetes()
    加载和返回糖尿病数据集

6.4估计器

在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator,是一类实现了算法的API

1、用于分类的估计器:

  • sklearn.neighbors k-近邻算法
  • sklearn.naive_bayes 贝叶斯
  • sklearn.linear_model.LogisticRegression 逻辑回归

2、用于回归的估计器:

  • sklearn.linear_model.LinearRegression 线性回归
  • sklearn.linear_model.Ridge 岭回归

估计器的工作流程:
零基础学机器学习(基于Python Scikit-learn)
- - - >>>返回目录<<< - - -

七、K-近邻算法

分类算法-k近邻算法(KNN)
定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
来源:KNN算法最早是由Cover和Hart提出的一种分类算法

计算距离公式:
两个样本的距离可以通过如下公式计算,又叫欧式距离
比如说,a(a1,a2,a3),b(b1,b2,b3)
零基础学机器学习(基于Python Scikit-learn)
sklearn k-近邻算法API: sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)

  • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选用于计算最近邻居的算法:‘ball_tree’将会使用BallTree,‘kd_tree’将使用 KDTree。‘auto’将尝试根据传递给fit方法的值来决定最合适的算法。 (不同实现方式影响效率)
    k值取很小:容易受异常点影响
    k值取很大:容易受最近数据太多导致比例变化

k-近邻算法优缺点

优点:

  • 简单,易于理解,易于实现,无需估计参数,无需训练

缺点:

  • 懒惰算法,对测试样本分类时的计算量大,内存开销大
  • 必须指定K值,K值选择不当则分类精度不能保证

使用场景:

  • 小数据场景,几千~几万样本,具体场景具体业务去测试

- - - >>>返回目录<<< - - -

八、朴素贝叶斯算法

联合概率和条件概率:

  • 联合概率:包含多个条件,且所有条件同时成立的概率
    记作:

上一篇:Git工具


下一篇:Unity关联VScode