机器学习,数据可视化 |
|
老大哥
L5
• 2021-01-09 • 回复 2 • 只看楼主
• 举报
|
机器学习
- 人工智能概述
- 图灵测试
- 人工智能包含机器学习包含深度学习
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法(神经网络)发展而来
- 计算机视觉(识别 检测) 自然语言处理(语音识别、语义识别) 机器人(综合应用)
- 语音识别 鸡尾酒会效应
- 文本挖掘/分类 (关键字)
- 必备三要素:
- 数据
- 算法
- 计算
- 机器学习:从数据中自动分析获得模型,并利用模型对未知数据进行预测
- 流程:
- 获取数据
- 专有名词:样本、特征、目标值(标签值)、特征值
- 数据类型:
- 特征值+目标值: 目标值分为离散和连续
- 只有特征值
- 划分:
- 训练数据(训练集)--构建模型 0.7--0.8
- 测试数据(测试集)--模型评估 0.2--0.3
- 数据基本处理
- 对数据进行缺失值和异常值处理
- 特征工程:让模型更好
- 特征提取
- 将数据转换为可用于机器学习的特征数据的过程(更容易识别)
- 特征预处理
- 通过一些转换函数将特征数据转换成更加适合算法模型的特征数据的过程
- 特征降维
- 在某些限定情况下,降低随机变量(特征)的个数
- 特征提取
- 机器学习(模型训练)
- 模型评估
- 分类模型评估
- 准确率:预测正确的数占样本数的比例
- 精确率:正确预测为正占全部预测为正的比例
- 召回率:
- F1-score:稳健性
- AUC指标:样本不均衡
- 回归模型评估:
- 均方根误差
- 相对平方误差
- 平均绝对误差
- 相对绝对误差
- 决定系数
- 分类模型评估
- 获取数据
- 机器学习分类:
- 监督学习
- 输入数据是由特征值和目标值所组成的
- 函数的输出可以是一个连续的值(称为回归)
- 预测房价
- 或者输出是一个离散的值(称作分类)
- 判断肿瘤是良性还是恶性
- 函数的输出可以是一个连续的值(称为回归)
- 输入数据是由特征值和目标值所组成的
- 无监督学习
- 输入数据是由输入特征组成(没有标记,没有结果)
- 聚类问题
- 输入数据是由输入特征组成(没有标记,没有结果)
- 半监督学习
- 训练集同时包含有标记样本数据和未标记样本数据
- 强化学习
- 实质是自动进行决策,并且可以进行连续决策(动态规划)上一步输出,是下一步的输入
- 监督学习
- 深度学习简介:
- 神经网络
Matplotlib
- 神经网络
- 流程:
-
作用:
-
专门用于开发2D图表(包括3D图表)
-
使数据展示更加直观
-
流程:
- 导入: import matplotlib.pyplot as plt
- 创建画布:plt.figure(figsize=(20,8),dpi=100)
- 绘制图像: x=[] y=[] plt.plot(x,y)
- 显示图像:plt.show()
- Matplotlib 三层结构
- 容器层:
- Canvas: 放置画布(画板)已经存在了
- Figure:充当画布(图纸) plt.figure()
- Axes:画几幅图像(几幅图)
- 辅助显示层:(显示更加直观,无实质影响)
- Axes外观(facecolor)、 边框线(spines)、 坐标轴(axis) 、坐标轴名称(axis label)、 坐标轴刻度(tick)、
- 坐标轴刻度标签(tick label)、 网格线(grid)、 图例(legend)、 标题(title)
- 图像层:
- Axes内通过plot(折线图)\scatter(散点图)\bar(条形图)\histogram(直方图)\pie(饼图) 等控制输出图像
- 容器层:
-
figsize:图画多大
-
dpi:清晰度
-
保存图像:
- plt.savefig('test.png')
-
解决字体显示中文问题 -from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
-
添加网格
- plt.grid(True,linestyle='--',alpha=1) linestyle--网格方式 alpha--透明度
-
添加描述信息
- plt.xlabel("时间")
- plt.ylabel('温度')
- plt.title('一小时温度变化图',fontsize=20)
-
多次plot
- 直接进行绘制
-
显示图例
- plt.legend()
- 注意:需要在显示之前,声明plot里面具体的值
-
多个坐标系图像显示:
- fig,axes = plt.subplots()
- nrows -- 几行 ncols -- 几列
- 注意:有些方法需要添加 set_*
- fig,axes = plt.subplots()
-
折线图应用场景:
- 表述数据变化
- 绘制一些数学函数
Numpy
-
- Numpy
- 开源的python科学计算库,用于快速处理任意维度的数组
- numpy中,存储对象是ndarray
- 创建
- np.array([])
- 优势
- 内存块风格 ---一体化存储
- 支持并行化运算
- 效率远高于纯python代码 底层使用了c,内部释放了GIL
- ndarry属性:
- .shape ---数组维度的元组
- .ndim ---数组维度
- .size ---数组元素数量
- .itemsize ---一个数组元素的长度(字节)
- dtype ---数组元素的类型
- 生成数组的方法
- 生成0和1的数组
- np.ones()
- np.oneslike()
- 从现有数组中生成
- np.array --深拷贝
- np.asarray --浅拷贝s
- 生成固定范围数组
- np.linspace() --nun 生成等间隔的多少
- np.arange() --step 每间隔多少生成数据
- np.logspace() --生成以10deN次幂的数据
- 生成随机数组
- 均匀分布生成
- np.random.uniform() low high size
- 正态分布
- np.random.normal() low high size
- 均差:--图形的左右位置
- 方差:--图形是胖还是瘦,方差越大,图形越矮胖,数据越分散
- 数组的索引、切片
- 直接索引 ;先进行行索引,再进行列索引, 高维数组,从宏观到微观
- 形状修改
- 对象.reshape 不进行行列互换,产生新变量
- 对象.resize 进行行列互换,对原值进行修改
- 对象.T 进行行列互换
- 类型修改
- 对象.astype()
- 数组去重
- np.unnique()
- ndarry运算
- 逻辑运算
- 大于、小于直接进行判断
- 赋值:满足要求,直接进行赋值
- 通用判断函数
- np.all() ---所有满足要求,才返回True
- np.any() ---只要有一个满足要求,就返回True
- 三元运算
- np.where() ---满足要求赋第一个值,否则赋第二个值
- np.logicaland() --并
- np.logical_or() --或
- 统计运算
- min --最小值
- max --最大值
- midian --中位数
- mean --均值
- std --标准差
- var --方差
- argmax --最大值下标
- argmin --最小值下标
- 逻辑运算
- 矩阵
- 矩阵:二维数组
- 向量:一维数组
- 加法:对应位置相加
- 乘法:标量和每个位置的元素相乘
- 数组间运算
- 数组和数字可以直接进行运算
- 数组和数组:需要满足广播机制--维度相同或者,shape对应位置为1
- 矩阵乘法:
- np.dot -- 点乘
- np.matmul -- 矩阵相乘
- 均匀分布生成
- 生成0和1的数组