机器学习之基础知识(全)(代码片段)

我行我素,向往自由 我行我素,向往自由     2023-04-06     577

关键词:

目录

1.机器学习概述

1.1 人工智能概述

1.1.1 人工智能使用场景

1.1.2 人工智能小案例

1.2 人工智能发展历程

1.2.1 图灵测试

1.2.2 发展历程

1.2.3 小结

1.3 人工智能主要分支

1.3.1 人工智能、机器学习和深度学习

1.3.2 主要分支介绍

1.3.3 人工智能发展必备三要素

1.3.4 拓展:GPU和CPU对比

1.4 机器学习工作流程

1.4.1 什么是机器学习

1.4.2 机器学习工作流程

1.4.3 获取到的数据集介绍

1.4.4 数据基本处理

1.4.5 特征工程

1.4.6 机器学习和模型评估概念

1.5 机器学习算法分类

1.5.1 监督学习

1.5.2 无监督学习

1.5.3 半监督学习

1.5.4 强化学习

1.5.5 小结

1.6 模型评估

1.6.1 分类模型评估

1.6.2 回归模型评估

1.6.3 拟合

1.7 Azure平台简介

1.8 深度学习简介【了解】

1.8.1 深度学习--神经网络简介

1.8.2 深度学习各层负责的内容

2.机器学习基础环境安装与使用

2.1 库的安装 

2.2 Jupyter Notebook的使用

2.2.1 Jupyter Notebook介绍

2.2.2 为什么使用Jupyter Notebook

2.2.3 简单操作介绍

2.2.4 markdown功能

3.Matplotlib详讲

3.1 Matplotlib之HelloWorld

3.1.1 什么是Matplotlib

3.1.2 为什么要学 Matplotlib

3.1.3 实现一个简单的Matplotlib画图

3.1.4 认识Matplotlib图像结构(拓展,了解)

3.1.5 Matplotlib三层结构(拓展,了解)

3.2 折线图(plot)与基础绘图功能

3.2.1 折线图绘制与保存图片

3.2.2 完善原始折线图1(辅助显示层)

3.2.3 添加网格显示

3.2.4 添加描述信息

3.2.5 多次plot

3.2.6 设置图形风格

3.2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)

3.2.8 折线图应用场景

3.3 常见图形绘制

3.3.1 常见图形种类及意义

3.3.2 散点图绘制

3.3.3 柱状图绘制

4.numpy

4.1 numpy的优势

4.1.1 numpy介绍

4.1.2 ndarray介绍 

4.1.3 ndarray与Python原生list运算效率对比

4.1.4 narray的优势

4.2 N维数组-ndarray

4.2.1 ndarray的属性

4.2.2 ndarray的形状

4.2.3 ndarray的类型

4.3 基本操作

4.3.1 生成数组的方法

4.3.2 数组的索引、切片

4.3.3 形状修改

4.3.4 类型修改

4.3.5 数组的去重

4.4 ndarray运算

4.4.1 逻辑运算

4.4.2 通用判断函数

4.4.3 np.where (三元运算符)

4.4.4 统计运算

4.5 数学:矩阵

4.5.1 矩阵和向量

4.5.2 加法和标量乘法

4.5.3 矩阵向量乘法

4.5.4 矩阵乘法

4.5.5 矩阵乘法的性质

4.5.6 逆、转置

4.6 数组间运算

4.6.1 数组和数的运算

4.6.2 数组与数组的运算:广播机制

4.6.3 矩阵乘法api

5.Pandas

5.1 Pandas介绍

5.1.1 Pandas介绍

5.1.2 为什么使用Pandas

5.1.3 案例

5.1.4 DataFrame

5.2 基本数据操作

5.2.1 索引操作

5.2.2 赋值操作

5.2.3 排序

5.3 DataFrame运算

5.3.1 算术运算

5.3.2 逻辑运算

5.3.3 统计运算

5.3.4 累计统计函数

5.3.5 自定义函数

5.4 Pandas画图

5.5 文件读取与存储

5.5.1 CSV

5.5.2 HDF5

5.5.3 JSON

5.5.4 拓展

5.6 高级处理-缺失值处理

5.6.1 如何处理nan

5.6.2 不是缺失值nan,有默认标记的

5.7 高级处理-数据离散化

5.7.1 为什么要离散化

5.7.2 什么是数据离散化

5.7.3 数据分组操作

5.7.4 分组数据变成one-hot编码

5.8 高级处理-数据合并

5.8.1 pd.concat实现数据合并

5.8.2 pd.merge实现数据合并

5.9 高级处理-交叉表与透视表

5.9.1 交叉表与透视表什么作用

5.9.2 使用crosstab(交叉表)实现上图

5.9.3案例-探究股票和星期几之间的关系

5.9.4 使用pivot_table(透视表)实现

5.10 高级处理-分组与聚合

5.10.1 什么分组和聚合

5.10.2 分组API

5.10.3 星巴克零售店铺数据


1.机器学习概述

 

1.1 人工智能概述

1.1.1 人工智能使用场景

1.1.2 人工智能小案例

https://quickdraw.withgoogle.com

https://pjreddie.com/darknet/yolo/

https://deepdreamgenerator.com/

1.2 人工智能发展历程

                 

1.2.1 图灵测试

1.2.2 发展历程

1.2.3 小结

1.3 人工智能主要分支

1.3.1 人工智能、机器学习和深度学习

1.3.2 主要分支介绍

                 


1.3.3 人工智能发展必备三要素

1.3.4 拓展:GPU和CPU对比

CPU擅长IO处理,GPU擅长计算。

1.4 机器学习工作流程

1.4.1 什么是机器学习

1.4.2 机器学习工作流程

1.4.3 获取到的数据集介绍

        ​​​​​​ 

1.4.4 数据基本处理

即对数进行缺失值、去除异常值等处理。

1.4.5 特征工程

(1)什么是特征工程

(2)为什么需要特征工程(Feature Engineering)

(3) 特征工程包括内容

  • 特征提取
  • 特征预处理
  • 特征降维

 特征提取:

特征预处理:

特征降维:

1.4.6 机器学习和模型评估概念

机器学习:选择合适的算法对模型进行训练。

模型评估:对训练好的模型进行评估。

1.5 机器学习算法分类

1.5.1 监督学习

定义: 输入数据是由输入特征值和目标值所组成。
        -函数的输出可以每一个连续的值(称为回归);

        -或是输出是有限个离散值(称作分类)。

(1)回归问题 

例如︰预测房价,根据样本集拟合出一条连续曲线。

(2)分类问题

例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性"或者“恶性”,是离散的。

1.5.2 无监督学习

定义:输入数据是由输入特征值组成。
        输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。

举例:

1.5.3 半监督学习

定义:即训练集同时包含有标记样本数据和未标记样本数据。
举例:

1.5.4 强化学习

强化学习:实质是,make decisions问题,即自动进行决策,并且可以做连续决策。

强化学习的目标:就是获得最多的累计奖励。
举例:

监督学习与强化学习的对比:

1.5.5 小结

1.6 模型评估

        模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。按照数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估。 

1.6.1 分类模型评估

  • 准确率:预测正确的数占样本总数的比例。
  • 精确率:正确预测为正占全部预测为正的比例。
  • 召回率:正确预测为正占全部正样本的比例。
  • F1-score:主要用于评估模型的稳健性。
  • AUC指标:主要用于评估样本不均衡的情况。

1.6.2 回归模型评估

1.6.3 拟合

模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。

在训练过程中,你可能会遇到如下问题:
        训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。

(1)欠拟合 

(2)过拟合

过拟合((over-fitting)∶所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

1.7 Azure平台简介

Azure Machine Learning (简称"“AML")是微软在其公有云Azure上推出的基于Web使用的一项机器学习服务,机器学习属人工智能的一个分支,它技术借助算法让电脑对大量流动数据集进行识别。这种方式能够通过历史数据来预测未来事件和行为,其实现方式明显优于传统的离业智能形式。


微软的目标:是简化使用机器学习的过程,以便于开发人员、业务分析师和数据科学家进行广泛、便捷地应用。


这款服务的目的:在于“将机器学习动力与云计算的简单性相结合”。


AML目前在微软的Global Azure云服务平台提供服务,用户可以通过站点: https://studio.azureml.net/申请免费试用。

UCI机器学习数据库的网址:http://archive.ics.uci.edu/ml/
 

1.8 深度学习简介【了解】

1.8.1 深度学习--神经网络简介

深度学习演示链接:http://playground.tensorflow.org

1.8.2 深度学习各层负责的内容

增加层数:通过更抽象的概念识别物体,器官层,分子层,原子层。

增加结点数:增加同一层物质的种类。

2.机器学习基础环境安装与使用

2.1 库的安装 

整个机器学习基础阶段会用到Matplotlib、Numpy、Pandas等库
注意:
        每个包安装的过程中,尽量指定稳定版本进行安装。

2.2 Jupyter Notebook的使用

2.2.1 Jupyter Notebook介绍

Jupyter项目旨在开发跨几十种编程语言的开源软件,开放标准和用于交互式计算的服务。 

2.2.2 为什么使用Jupyter Notebook

总结:Jupyter Notebook相比 Pycharm在画图和数据展示方面更有优势。

2.2.3 简单操作介绍

在cmd中输入jupyter notebook就可以打开。


2.2.4 markdown功能

esc + m 

3.Matplotlib详讲

3.1 Matplotlib之HelloWorld

3.1.1 什么是Matplotlib

  • 是专门用于开发2D图表(包括3D图表)
  • 使用起来及其简单
  • 以渐进、交互式方式实现数据可视化

3.1.2 为什么要学 Matplotlib

        可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

  • 能将数据进行可视化,更直观的呈现
  • 使数据更加客观、更具说服力

例如下面两个图为数字展示和图形展示:

3.1.3 实现一个简单的Matplotlib画图

import matplotlib.pyplot as plt


# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)

#2.绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y)

#3.显示图像
plt.show()

运行结果:

3.1.4 认识Matplotlib图像结构(拓展,了解)

3.1.5 Matplotlib三层结构(拓展,了解)

(1)容器层

容器层主要由Canvas、Figure、Axes组成。


Canvas是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具。
Figure是Canvas上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。
Axes是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。

  • Figure:指整个图形(可以通过plt.figure()设置画布的大小和分辨率等)
  • Axes(坐标系):数据的绘图区域
  • Axis(坐标轴):坐标系中的一条轴,包含大小限制、刻度和刻度标签

特点为∶

  • 一个figure(图像)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。
  • 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系。

(2)辅助显示层

辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。


该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。

(3)图像层 

图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

总结:

  • Canvas(画板)位于最底层,用户一般接触不到
  • Figure (画布)建立在Canvas之上
  • Axes(绘图区)建立在Figure之上
  • 坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在Axes之上

3.2 折线图(plot)与基础绘图功能

3.2.1 折线图绘制与保存图片

为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用。

(1)matplotlib.pyplot模块

matplotlib.pytplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系。
import matplotlib.pyplot as plt

(2)折线图绘制与显示

展现上海一周的天气,比如从星期一到星期日的天气温度如下:

import matplotlib.pyplot as plt
#1.创建画布
plt.figure(figsize=(10,10))
#2.绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
#3.显示图像
plt.show()

运行结果:

(3)设置画布属性与图片保存

plt.figure(figsize=(),dpi=)

        figsize:指定图的长度

        dpi:图像的清晰度

plt.savefig(path)

注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。所以,图像保存一定要放到show前面。

3.2.2 完善原始折线图1(辅助显示层)

案例:显示温度变化状况。
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度。

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(10,15) for i in x]

#1.创建画布
plt.figure(figsize=(20,8),dpi=200)

#2.绘制折线图
plt.plot(x,y_shanghai)
#2.1 添加x、y轴刻度
y_ticks=range(40)
plt.yticks(y_ticks[::5])
x_ticks_label=['11点分'.format(i) for i in x]
plt.xticks(x[::5],x_ticks_label[::5])
#plt.xticks(x_ticks_label[::5])#报错   ==>  必须最开始传递进去的是数字


#3.显示图像
plt.show()

运行结果:

中文显示问题的解决: 

 SimHei字体下载路径:https://us-logger1.oss-cn-beijing.aliyuncs.com/SimHei.ttf

3.2.3 添加网格显示

为了更加清楚地观察图形对应的值:plt.grid(True,linestyle='--',alpha= 0.5)

        参数:
                linestyle   --绘制网格的方式

                alpha       --透明度

3.2.4 添加描述信息

添加x轴、y轴描述信息及标题。

plt.xlabel('时间',fontsize=20)
plt.ylabel('温度',fontsize=20)
plt.title('xxxxx',fontsize=20)

3.2.5 多次plot

需求:添加一个城市的温度变化。
        收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下:

y_beijing=[random.uniform(1,3) for i in x]
plt.plot(x,y_beijing,color='b',linestyle='-.',label='北京')
#显示图例
plt.legend(loc='best')

3.2.6 设置图形风格

显示图例:plt.legend(loc='best')

注意:如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。

3.2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)

matplotlib.pyplot.subplots(nrows=1, ncols=1,**fig_kw)创建一个带有多个axes(坐标系/绘图区)的图。

注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing=[random.uniform(1,14) for i in x]

#1.创建画布
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)

#2.绘制折线图
axes[0].plot(x,y_shanghai,color='r',linestyle='--',label='上海')
axes[1].plot(x,y_beijing,color='g',linestyle='-.',label='北京')

#2.1 添加x、y轴刻度
x_ticks_label=['11点分'.format(i) for i in x]
y_ticks=range(40)
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])

#2.2 添加网格
axes[0].grid(True,linestyle='--',alpha=1)
axes[1].grid(True,linestyle='--',alpha=1)


#2.3 添加描述
axes[0].set_xlabel('时间',fontsize=25)
axes[0].set_ylabel('温度',fontsize=25)
axes[0].set_title('上海',fontsize=25)
axes[1].set_xlabel('时间',fontsize=25)
axes[1].set_ylabel('温度',fontsize=25)
axes[1].set_title('北京',fontsize=25)


#2.4显示图例
axes[0].legend(loc='best')
axes[1].legend(loc='best')

#3.显示图像
plt.show()

运行效果:

3.2.8 折线图应用场景

  • 呈现公司产品(不同区域)每天活跃用户数
  • 呈现app每天下载数量
  • 呈现产品新功能上线后,用户点击次数随时间的变化
  • 拓展:画各种数学函数图像

注意:plt.plot()除了可以画折线图,也可以用于画各种数学函数图像。

import random
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['axes.unicode_minus']=False #解决负号显示问题

#0.准备数据
x=np.linspace(-10,10,1000)#[-10,10]1000个数据
y=np.sin(x)

#1.创建画布
plt.figure(figsize=(20,8),dpi=100)

#2.绘制函数图像
plt.plot(x,y)
#2.1显示网格
plt.grid()

#3.显示图像
plt.show()

运行结果:

3.3 常见图形绘制

https://matplotlib.org/index.html

3.3.1 常见图形种类及意义

Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。
我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据。

(1)折线图 

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图。
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

机器学习之推荐算法(代码片段)

1、知识点"""推荐系统1、相似度计算:1、欧几里德距离2、皮尔逊相关系数3、Cosin距离2、推荐相似度选择:1、固定数量的邻居2、基于相似度门槛的邻居3、基于用户的协同过滤:根据用户和其他用户之间的相关系数值,选择值越... 查看详情

机器学习之深度学习入门(代码片段)

...习资料,学习建议本文用浅显易懂的语言精准概括了机器学习的相关知识,内容全面,总结到位,剖析了机器学习的what,who,when,where,how,以及why等相关问题。从机器学习的概念,到机器学习的发... 查看详情

机器学习之pandas基础——pandas与概率论的简短碰面(代码片段)

​​活动地址:CSDN21天学习挑战赛概率论和机器学习        概率论是研究随机现象数量规律的数学分支,是一门研究事情发生的可能性的学问。机器学习中随处可见概率论的影子,最典型的当属最大似然估计ÿ... 查看详情

全网最快掌握机器学习之深度学习之神经网络数学基础(附源代码)(代码片段)

个人公众号yk坤帝后台回复机器学习获得源代码1.全文简介要理解深度学习,需要熟悉很多简单的数学概念:张量、张量运算、微分、梯度下降等。本文目的是用不那么技术化的文字帮你建立对这些概念的直觉。特别地... 查看详情

机器学习之决策树(代码片段)

一、复习信息熵  为了解决特征选择问题,找出最优特征,先要介绍一些信息论里面的概念。   1、熵(entropy)        python3代码实现:defcalcShannonEnt(dataSet):‘‘‘计算香农熵:paramdataSet:数据集:return:计算结果... 查看详情

机器学习之tensorflow-补充学习中20220821(代码片段)

文章目录前言一、前置基础1.1什么是神经网络1.2什么是线性回归1.3示例:识别手写数字1.4示例:图像识别分类1.5待定番外Java/Python业务通信二、待定总结前言以下内容是在学习过程中的一些笔记,难免会有错误和纰漏... 查看详情

机器学习之新闻文本分类。(代码片段)

新闻文本分类首先需要通过大量的训练之后获得一个存放关键字的表,之后再输入一个新闻内容,通过代码就可以自动判断出这个新闻的类别,我这里是在已经有了新闻文本的关键词表后的处理,#encoding=utf-8#遍历文件,用Prosesso... 查看详情

机器学习之概率统计基础,机器学习学习笔记----07

机器学习之概率统计基础文章目录机器学习之概率统计基础一、条件概率二、贝叶斯公式三、独立性注:本图片来源于《机器学习中的数学》一书一、条件概率在一个情况发生的情况下,另一个情况的概率二、贝叶斯公... 查看详情

rust机器学习之tch-rs(代码片段)

Rust机器学习之tch-rstch-rs是PyTorch接口的Rust绑定,可以认为tch-rs是Rust版的PyTorch。本文将带领大家学习如何用tch-rs搭建深度神经网络识别MNIST数据集中的手写数字。本文是“Rust替代Python进行机器学习”系列文章的第五篇,其... 查看详情

android学习之数据存储全方案(代码片段)

这里写目录标题文件文件存储文件保存文件读入SharedPreferences得到对象的三种方式存储数据读取数据CheckBox控件记住密码功能SQLite数据库存储创建升级添加数据更新数据删除数据查询数据LitePal准备配置添加数据更新数据将所有数... 查看详情

机器学习之特征选择方法(代码片段)

特征选择是一个重要的数据预处理过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后在训练学习器,如下图所示:进行特征选择有两个很重要的原因:避免维数灾难:能剔除不相关(irrelevant)或冗余(redundant)... 查看详情

浅谈机器学习之深度学习(代码片段)

...资料,学习建议1.1.4深度学习之“深度”深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。“深度学习... 查看详情

prometheus学习之机器监控(代码片段)

Prometheus使用exporter工具来暴露主机和应用程序上的指标。今天我们就使用node_exporter来收集各种主机指标数据(如:CPU、内存和磁盘等)。安装node_exporter从 Prometheus 的官网下载安装包,这里下载的是 Linux安装... 查看详情

prometheus学习之机器监控(代码片段)

Prometheus使用exporter工具来暴露主机和应用程序上的指标。今天我们就使用node_exporter来收集各种主机指标数据(如:CPU、内存和磁盘等)。安装node_exporter从 Prometheus 的官网下载安装包,这里下载的是 Linux安装... 查看详情

机器学习之集成学习算法(代码片段)

...#xff0c;因此优于任何一个单分类的做出预测。1.2复习:机器学习的两个核⼼任务任务一:如何优化训练数据 —>主要用于解决欠拟合问题任务二:如何提升泛化性能 — 查看详情

机器学习之线性回归(代码片段)

文章目录评价方法一元线性回归np.polyfit求解带入公式求解化简公式求解lstsq求解多元线性回归代码实现一元多项式回归代码实现参考评价方法回归问题有很多的评价方法。这里主要想写一下R^2的计算方法。需要计算R^2需要先弄清... 查看详情

机器学习之支持向量机(手推公式版)(代码片段)

...ine,SVM)源于统计学习理论,是一种二分类模型,是机器学习中获得关注最多的算法,没错, 查看详情

深度学习之nlp(代码片段)

...检查、关键字检索2、文本挖掘3、文本分类(二分类)4、机器翻译5、客服系统6、复杂对话系统4)p(S)=p(w1,w2,w3,w4,w5,&helli 查看详情