导图社区 人工智能[16]人工智能基础
由海南大学机电工程学院自动化2021-4某吴姓同学制作 后面算法部分不做整理
编辑于2022-03-13 16:05:15人工智能[16]人工智能基础
1.机器学习概述
1.人工智能概述
2.人工智能发展历程
起源
图灵测试
1956年达特茅斯会议
发展3个阶段
1980年代-正式成形期
1990-2010年代-蓬勃发展期
2012年之后-深度学习期
3.人工智能主要分支
区别
人工智能
机器学习
是人工智能的一个实现途径
深度学习
是机器学习的一个方法(神经网络)发展而来
主要分支
(感知)计算机视觉(CV)
分支一:计算机视觉
机器感知环境的能力
(通讯)自然语言处理(NLP)
分支二:语音识别:识别语言(说出的语言)并将其转换成对应文本的技术
难题
[鸡尾酒会效应]
声纹识别
百度语音识别
分支三:(语义识别)文本挖掘/分类
用于理解、组织和分类结构化或非结构化文本文档
句法分析、情绪分析和垃圾信息检测
分支四:机器翻译(MT)
利用机器的力量自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)
(行动)机器人
分支五:机器人学(Robotics)
机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理
固定机器人和移动机器人
4.人工智能必备三要素
1.数据
2.算法
逐层、分布、并行算法
3.计算力
GPU、FPGA、TPU能力
GPU
GPU-计算密集型
CPU-IO密集型
计算能力只是CPU很小的一部分
适合在GPU上运行
1.计算密集型的程序
2.易于并行的程序
5.人工智能工作流程概述
机器学习
原理
数据+预测:从数据中自动分析获取模型,并利用模型对未知数据进行预测
工作流程
1.获取数据
2.数据基本处理
3.特征工程
4.机器学习(模型训练)
5.模型评估
6.数据集的介绍
获取到的数据集介绍
1.专有名词
样本
一个样本:一行数据
特征
一个特征:一列数据
目标值(标签值)
特征值
有些数据有目标值(标签值),有些没有
如:电影类型就是这个数据集的目标值
2.数据类型构成
1.特征值+目标值(目标值分为连续的和离散的)
2.只有特征值,没有目标值
3.数据划分
训练数据(训练集) --构建模型
0.7-0.8
测试数据(测试集) --模型评估
0.2-0.3
4.数据基本处理
对数据进行缺失值、去除异常值等处理
7.特征工程介绍
使数据更容易被机器识别
“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”
内容
特征提取
将任意数据(如文本或图像)转换为可用于机器学习的
特征预处理
通过一些 转换函数 将特征数据 转换成更加适合算法模型 的特征数据过程
特征降维
在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
8.机器学习算法分类
1.监督学习(预测)
输入数据有特征值也有目标值
回归:函数的输出可以是一个连续的值
回归问题
eg:预测房价,根据样本集拟合出一条连续曲线
线性回归、岭回归
分类:或是输出是有限个离散值
分类问题
eg:判断肿瘤是良性还是恶性
k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
In:有标签;Out:有反馈
目的:预测结果
案例:猫狗分类,房价预测
主要用这个
2.无监督学习
输入数据只有特征值
输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类)试图使类内差距最小化,类间差距最大化
In:无标签;Out:无反馈
目的:发现潜在结构
案例:“物以类聚,人以群分”
聚类
k-means,降维
有监督和无监督的区别
3.半监督学习
训练集同时包含有标记样本数据和未标记样本数据
有特征值,但一部分数据有目标值,一部分没有
已知:训练样本Data和待分类的类别
未知:训练样本有无标签均可
In:无标签;Out:无反馈
案例:训练数据量过多时
监督学习效果不能满足需求,因此用来增强效果
能减少工作量,但不成熟
4.强化学习
自动进行决策,并且可以做连续决策
动态过程:上一步数据的输出是下一步数据的输入
In:决策流程及激励系统;Out:一系列行动
目的:(获得最多的累计奖励)长期利益最大化,回报函数(只会提示你是否在朝着目标方向前进的延迟反馈)
案例:学下棋
算法
马尔科夫决策,动态规划
四要素
1.agent
2.环境状态(environment)
3.行动(action)
4.奖励(Reward)
监督学习和强化学习的区别
根据数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估
9.分类模型评估介绍
分类模型评估
准确率:预测正确的数占样本总数的比例
精确率:正确预测为正占 全部预测为正 的比例
召回率:正确预测为正占 全部正样本 的比例
F1-score:主要用于评估模型的稳健性
AUC指标:主要用于评估样本不均衡的情况
10.回归模型评估和拟合问题
回归模型评估
均方根误差
只能比较误差是相同单位的模型
相对平方误差
可以比较误差是不同单位的模型
平均绝对误差
只能比较误差是相同单位的模型
量级近似与RMSE,但是误差值相对小一些
相对绝对误差
可以比较误差是不同单位的模型
决定系数
拟合
欠拟合
学到的特征太少
过拟合
学到的特征过多
11.azure平台实验演示
数据来源
UCI 机器学习存储库:http://archive.ics.uci.edu/ml/
CSV可用Excel打开
azure平台
https://studio.azureml.net/
个人体验
12.深度学习简介
神经网络
卷积网络之父:Yann LeCun
2.机器学习基础环境库的安装
1.机器学习基础环境库的安装
库的安装
pip install -r requirements.txt -i https://pypi.douban.com/simple/
pip install virtualenvwrapper-win
2.jupyter基本使用介绍
Jupyter Notebook
cell
一对In Out
Ctrl+enter
不会跳
Shift+enter
会跳到下一格
3.jupytermarkdown功能演示
快捷键操作
markdown演示
# 标题
- 缩进
3.matplotlin
1.matplotlin基本简介
2D画图(为了使数据更直观)
绘图流程
1.创建画布
2.绘制画布
3.显示图像
三层结构
容器层
Canvas:充当画板,放置画布
Figure:整个图形(可通过plt.figure()设置画布的大小和分辨率)
Axes:画几副图像
辅助显示层
添加x轴,y轴描述,标题
图像层
绘制什么图像的声明
2.基础绘图功能演示 图像保存 xy轴刻度 添加网络
设置画布属性
plt.figure()
figsize:指定图的长宽
dpi:分辨率
图片保存
plt.savefig("./data/test.png")
一定要放在show前面
注意
添加自定义x,y刻度
中文问题解决
添加网格显示
linestyle --绘制网格的方式
alpha --透明度
3.多次plot和显示图例
标题
plt.xlabel
plt.ylabel
plt.title
使用多次plot可以画多个折线
显示图例
记得label
设置图形风格
4.多个坐标系显示图像
subplots
nrows --几行
ncols --几列
注意:有些方法需要添加set_*
5.折线图的应用场景
plt.plot()除了可以画折线图,也可以画各种数学函数图像
体现数据变化
6.今日总结
4.Numpy
1.昨日复习
2.常见图形绘制
折线图
变化
绘制
plt.plot()
柱状图
离散的,对比
绘制
plt.bar()
直方图
连续的,分布(正态分布)
绘制
plt.hist()
饼图
占比
绘制
plt.pie()
散点图
分布规律
绘制
plt.scatter()
3.numpy基本介绍
优势
快速处理数组计算
效率对比
Numpy底层使用C语言编写,内部释放了GIL,效率高
内存块风格 -- 一体式存储
支持并行化运算
存储数组
Numpy中,存储对象是ndarray
创建:np.array([])
import numpy as np
4.ndarray介绍
ndarray的属性
ndarray的形状
.shape()
二维
三维
四维
ndarray的类型
dtype=
整数默认int64
小数默认float64
5.生成数组
生成0和1的数组
从现有数组生成
np.asarray()
浅拷贝
直接np.array(XXX)
深拷贝
生成固定范围的数组
np.linspace()
num -- 生成等间隔的多少个
step -- 每间隔多少生成数据
生成以10的N次幂的数据
生成随机数组
np.random.uniform()
均匀分布生成
主要用这个
np.random.rand()
np.random.randint()
6.正态分布和均匀分布
均匀分布
正态分布
均值
图形的左右位置
方差
图像是瘦,还是胖
值越小,图形越瘦高,数据越集中
值越大,图形越矮胖,数据越分散
创建方式
np.random.normal()
主要用这个
np.random.randn()
np.random.standard_normal()
7.切片和形状修改
数据的索引、切片
直接索引
先对行进行索引,再进行列索引
[0:n],[0:m] -- 前n行,前m列
高维数组索引,从宏观到微观
形状修改
ndarray.reshape()
不进行行列互换,产生新变量
[-1, 列]
ndarray.resize()
不进行行列互换,对原来值进行更改
XXX.T
行列互换
8.类型修改和数组去重
类型修改
ndarray.astype(type)
主要用这个
ndarray.tostring()或ndarray.tobytes()
拓展
数组去重
ndarray.unique()
要对应个数
此处ndarray为对象
9.ndarray运算
逻辑运算
大于,小于直接进行判断
列表不行
赋值:满足要求,直接进行赋值
通用判断函数
np.all()
需要全部满足要求才能返回True
np.any()
只要有一个满足要求,就能返回True
三元运算符
np.where()
满足要求,赋值第一个值,否则赋值第二个值
结合
np.logical_and 并
np.logical_or 或
统计运算
min
max
midian -- 中位数
mean -- 均值
std -- 标准差
var -- 方差
argmax -- 最大值下标
argmin -- 最小值下标
axis
=1 行
=0 列
别记了,会混的
10.矩阵介绍(一)
矩阵
矩阵的维数 = 行数 * 列数
向量是特殊的矩阵(列向量)
矩阵:二维数组
向量:一维数组
加法和标量乘法
矩阵的加法
行列数相等的可以加
对应位置相加
矩阵的乘法
每个元素都要乘
标量和每个位置的元素相乘
矩阵向量乘法
(M行, N列)*(N行, L列)=(M行, L列)
矩阵乘法
11.矩阵介绍(二)
矩阵乘法的性质
满足结合律,不满足交换律
单位矩阵
从左上到右下的对角线都是1,其他位置为0
逆、转置
逆
待定系数法
矩阵A * 矩阵B = 单位矩阵 ,那么A和B就互为逆矩阵
伴随矩阵
奇数加负号
求行列式
主对角线 - 副对角线
初等变换
转置
行列互换
12.数组间运算
数组与数的运算
直接运算
数组与数组的运算
广播机制Broadcast
维度相等
shape(其中相对应的一个地方为1)
满足上述至少一个条件
矩阵乘法api
np.matmul(a, b)
矩阵相乘
np.dot(a, b)
点乘
区别:dot支持矩阵和数字相乘
5.Pandas
1.pandas介绍和DataFrame使用
pandas概念
步骤
import pandas as pd
创建DataFrame
pd.DataFrame(ndarray)
增加行索引
axis=0
增加列索引
axis=1
创建日期
pd.date_range()
start -- 开始日期
end -- 结束日期
periods -- 时间跨度
freq -- 统计时间方式
DataFrame介绍
DataFrame属性
对象.shape
对象.index
行
对象.columns
列
对象.values
值
对象.T
对象.head()
头几行
对象.tail()
后几行
DataFrame设置索引
修改行列索引值
必须整行或者整列去进行修改
重设索引
对象.reset_index()
设置新索引
对象.set_index()
如果设置索引是两个的时候就是multiIndex
3.今日总结
4.昨日复习
5.索引操作
直接使用行列索引(先列后行)
只能先列后行,不可以先行后列
结合loc或者iloc使用索引
loc
只能指定行列索引的名字
iloc
可通过索引的下标
先行后列
使用ix组合索引
先行后列,混合索引
6.赋值和排序
赋值操作
对象.[""]
对象.属性值
排序
对索引进行排序
对内容进行排序
dataframe
对象.sort_values(by=, ascending=)
默认升序
对象.sort_index()
默认升序
by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的
series
对象.sort_values(ascending=True)
对象.sort_index()
7.算术运算和逻辑运算
算数运算
add()
sub()
逻辑运算
逻辑运算符号<、>、|、&
&要注意优先级问题
逻辑运算函数
query("查询字符串")
isin([ ])
8.统计运算
对象.describe()
count
mean
std
min
max
统计函数
sum
mean -- 均值
median -- 中位数
从小到大排序,没有中位数,就取平均值
max
min
mode -- 众数
abs -- 绝对值
prod
std -- 标准差
var -- 方差
idxmax -- 最大值的索引
求索引值而不是下标值
idxmin -- 最小值的索引
求索引值而不是下标值
累计统计函数
对象.cumsum() -- 和
对象.cummax() -- 最大值
对象.cummin() -- 最小值
对象.cumprod() -- 积
9.自定义函数运算
自定义运算
定义一个对列,最大值-最小值的函数
apply(func, axis=)
func -- 自己定义的函数
10.pandas画图
对象.plot()
kind
line -- 折线图
bar -- 条形图
barh -- 条形图旋转
hist -- 直方图
pie
scatter -- 散点图
11.csv文件读取和存储
读取:pd.read_csv()
usecols -- 需要哪列
存储:对象.to_csv()
columns -- 保存哪列
12.hdf,json数据的读取和存储
HDF5
读取:pd.read_hdf()
pip install tables
写入:pd.to_hdf()
注意:保存文件是****.h5
JSON
读取:pd.read_json()
写入:对象.to_json()
lines (=True) -- 是否按照行读取和写入
orient (="records") -- 按照什么方式进行读取或者写入
拓展
优先选择使用HDF5文件存储
1.压缩方式,读取效率快
2.压缩后,节省空间
3.支持跨平台
13.缺失值的判断
NaN类型是float
pd.isnull()
np.any()
pd.notnull()
np.all()
14.缺失值删除和替换
删除:对象.dropna(axis='rows')
缺失值的类型必须是np.nan
替换:对象.fillna(value, inplace='True')
value -- 替换成的值
inplace:True -- 会修改原数据;False:不替换修改原数据,生成新的对象
15.缺失值不是NaN的处理情况
缺失值不是nan,有默认标记的
URLerror:833
先替换'?'为np.nan
对象.replace()
to_replace -- 替换前的值
value -- 替换后的值
16.数据离散化
为什么要离散化
简化数据
什么是数据的离散化
把一些数据分到某个区间,最后用不同的符号或者数字表达
数据离散化api
pd.qcut(data, q)
把数据大致分为数量相等的几类
pd.cut()
指定分组间隔
数量统计:序列.value_counts()
one-hot编码
就是把数据转换成0, 1统计类型
别名:哑变量,热独编码
api:pd.get_dummies()
17.数据合并
pd.concat([data1, data2], axis=1)
按照行或列进行合并,axis=0为列索引,axis=1为行索引
pd.merge()
内连接
how="inner"
外连接
how="outer"
how="left"
left -- 左表
right -- 右表
on -- 指定键
how -- 按照什么方式进行拼接
18.交叉表和透视表
交叉表和透视表的作用
探索两列数据之间的关系
pd.crosstab()
返回具体数量
对象.pivot_table()
返回占比情况
19.分组和聚合
20.今日总结
21.科学计算库三天内容复习
22.电影数据分析案例
23.昨日复习
24.案例-电影数据分析
6.K-近邻算法
1.k近邻算法简介
2.k近邻算法的初步使用
3.距离度量(一)
4.距离度量(二)
5.距离度量(三)
6.k值的选择
7.kd树构造
8.kd树搜索(2.1,3.1)
9.kd树搜索(2,4.5)
10.数据集介绍
11.鸢尾花数据可视化
12.数据集划分
13.特征预处理
14.鸢尾花案例实现
15.今日总结
16.昨日复习
17.knn算法总结
18.交叉验证
19.网格搜索
20.facebook案例预测流程分析
7.线性回归
1.线性回归简介
2.线性回归api初步使用
3.数学求导复习(一)
4.数学求导复习(二)
5.线性回归损失和正规方程推导(一)
6.正规方程推导(二)
8.梯度下降
1.梯度下降法初步简介
2.梯度下降法介绍
3.正规方程api使用
4.今日总结
5.昨日复习
6.梯度下降法案例介绍
9.欠拟合过拟合
1.欠拟合过拟合简介
2.岭回归和lasso回归
3.弹性网络和early stopping
4.岭回归案例实现
5.模型保存和加载
10.逻辑回归
1.逻辑回归介绍
2.逻辑回归案例实现
3.精确率和召回率介绍
4.精确率和召回率api实现
5.roc和auc案例实现
6.roc曲线绘制(一)
7.roc曲线绘制(二)
8.roc曲线绘制(三)
11.决策树算法
1.决策树算法简介
2.信息熵的介绍
3.今日总结
4.昨日复习
5.信息增益(一)
6.信息增益(二)
7.信息增益比
8.基尼增益(一)
9.基尼增益(二)
10.cart剪枝介绍
11.特征提取介绍和字典特征提取
12.英文文本特征提取
13.中文文本特征提取
14.tfidf介绍
15.决策树api介绍
16.决策树案例实现
17.决策树可视化
12.集成学习
1.集成学习介绍
2.bagging集成过程简介
3.随机森林介绍
4.今日总结
5.昨日复习
6.boosting实现流程分析
7.bagging和boosting对比
8.GBDT介绍
9.XGBoost介绍
13.聚类算法
1.聚类算法简介
2.聚类算法api初步使用
3.聚类算法实现流程简介
4.聚类算法实现流程案例介绍
5.模型评估
6.算法优化(一)
7.算法优化(二)
8.特征降维介绍和地低方差特征过滤
9.相关系数介绍
10.pca降维
11.案例-探究用户对物品类别喜好
12.今日总结
13.机器学习阶段整体内容复习
14.pubg项目竞赛说明