Matplotlib绘图和jupyter notebook使用

Matplotlib绘图

  • jupyter notebook使用
    • 介绍
    • 用法
  • Matplotlib
    • 了解
    • 用法流程
    • 基础绘图功能 — 折线图
    • 多个坐标绘制
    • 常见图形绘制
  • 机器学习概述(了解)
    • 背景知识

jupyter notebook使用

介绍

是一款程序员和科学工作者的编程/文档/笔记/展示软件
.ipynb文件格式是用于计算型叙述的JSON文档格式的正式规范
数据挖掘、数据分析、工作的目标不明确,探索性编程
画图方便,展示友好

用法

画图方便、 数据展示更友好

# 进入虚拟环境
workon ai
# 输入命令
jupyter notebook

cell:一对In Out会话被视作一个代码单元,称为cell
编辑模式(Enter)
命令模式(Esc)
两种模式通用快捷键:
Shift+Enter,执行本单元代码,并跳转到下一单元
Ctrl+Enter,执行本单元代码,留在本单元
命令模式:按ESC进入
Y,cell切换到Code模式
M,cell切换到Markdown模式
A,在当前cell的上面添加cell
B,在当前cell的下面添加cell

Matplotlib

了解

是专门用于开发2D图表(包括3D图表)
以渐进、交互式方式实现数据可视化
能将数据进行可视化,更直观的呈现
使数据更加客观、更具说服力

用法流程

  1. 添加自定义x,y刻度
    plt.xticks(x, **kwargs)----x:要显示的刻度值
    plt.yticks(y, **kwargs)----y:要显示的刻度值
  2. 创建画布 – plt.figure()
    plt.figure(figsize=(), dpi=)
    figsize:指定图的长宽
    dpi:图像的清晰度
    返回fig对象
  3. 绘制图像 – plt.plot(x, y)
  4. 显示图像 – plt.show()
    中文显示
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

Matplotlib绘图和jupyter notebook使用_第1张图片

基础绘图功能 — 折线图

import matplotlib.pyplot as plt
import random

# 准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
#创建北京温度数据
y_beijing=[random.uniform(1,3) for i in x]

# 生成x刻度标签
x_ticklabels=["11点{}".format(i) for i in x]
# 生成y标签
y_ticklabels=range(40)

# 1.创建画布
plt.figure(figsize=(10,6),dpi=100)
# 2.绘制图像
# plt.plot(x,y_shanghai)#上海 No handles with labels found to put in legend.
plt.plot(x,y_shanghai,label="上海")
plt.plot(x,y_beijing,label="北京",linestyle="--",color="g") #绘制北京的
# 2.1添加刻度标签
# plt.xticks(x_ticklabels[::5]) 报错  'NoneType' object has no attribute 'update'
plt.xticks(x[::5],x_ticklabels[::5],fontsize=10)
plt.yticks(y_ticklabels[::5])
#2.2添加网格
plt.grid(True,linestyle="--",alpha=0.5)
#2.3添加标题-描述信息
plt.xlabel('时间',fontsize=16)
plt.ylabel('温度',fontsize=16)
plt.title('上海市一小时温度变化',fontsize=20)
#2.4添加图例
plt.legend(loc=0)

#图片保存
plt.savefig("./test.png") #保存图像一定要在show之前

# 3.显示图像
plt.show() #将图像发送到显示终端进行显示,同时释放图像内存资源

执行显示
Matplotlib绘图和jupyter notebook使用_第2张图片
注:标签x_ticklabels[::5]字符型不能直接更新,必须先给一个数值型标签,再替换。plt.xticks(x[::5],x_ticklabels[::5])

多个坐标绘制

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

  • set_xticks、 set_yticks、 set_xlabel、 set_ylabel、set_title
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]
# 1.创建画布
# plt.figure(figsize=(20, 8), dpi=100)
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
#nrows=1, ncols=2 一行,有俩坐标
# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
# plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
#axes[0].set_xticks(x[::5],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 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)

# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)

# # 2.4 图像保存
plt.savefig("./test.png")
# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像显示
plt.show()

Matplotlib绘图和jupyter notebook使用_第3张图片
小结:

  • 添加x,y轴刻度
    • plt.xticks()
    • plt.yticks()
    • 注意:在传递进去的第一个参数必须是数字,不能是字符串,如果是字符串,需要进行替换操作
  • 添加网格显示
    • plt.grid(linestyle="–", alpha=0.5)
  • 添加描述信息
    • plt.xlabel()
    • plt.ylabel()
    • plt.title()
  • 图像保存
    • plt.savefig(“路径”)
  • 显示图例
    • plt.legend(loc=“best”)
    • 注意:一定要在plt.plot()里面设置一个label,如果不设置,没法显示。
  • 多个坐标系显示
    • plt.subplots(nrows=, ncols=)

常见图形绘制

  1. 折线图
    plt.plot(x,y)
    观察变化趋势
  2. 散点图
    plt.scatter(x,y)
    观察相关性和数据分布规律
    Matplotlib绘图和jupyter notebook使用_第4张图片
  3. 柱状图
    plt.bar(x,height)
    对比大小
    Matplotlib绘图和jupyter notebook使用_第5张图片
  4. 直方图
    plt.hist(x,bins)
    观察连续数据的分布情况
  5. 饼图
    plt.pie(x, labels=,autopct=,colors)
    观察分类数据的占比情况

机器学习概述(了解)

背景知识

人工智能必备三要素:
数据、算法、计算力

计算力之CPU、GPU对比:
CPU主要适合I\O密集型的任务 少而强 8核
GPU主要适合计算密集型任务 多而弱 适合处理并行化任务

1956年也就成为了人工智能元年

机器学习工作流程总结:
1.获取数据
2.数据基本处理 数据清洗
3.特征工程 将数据转化为更适合算法训练的形式
4.机器学习(模型训练) 优化求解
5.模型评估 看模型在测试集上表现是否达到要求
结果达到要求,上线服务
没有达到要求,重新上面步骤

数据简介
在数据集中一般:
一行数据是一个样本
一列数据是一个特征
列分为 特征值x和目标值y

数据类型构成:
有监督数据:特征值和目标值 有x、y
y连续,回归问题
y离散,分类问题
无监督数据:只有特征值,没有目标值,有x无y
聚类

数据分割:
训练数据:用于训练,构建模型
测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
训练集:70% 80% 75%
测试集:30% 20% 25%

特征工程包含内容
特征提取:将非数值装换为数值
特征预处理:将数据转换成更好地数据
特征降维 保证数据差异的情况下减少数据维度,减少模型计算量。

机器学习算法分类
Matplotlib绘图和jupyter notebook使用_第6张图片
模型评估

  1. 分类模型评估—有对错之分 希望准确率越高越好
    分类模型y值是离散的 恶性 良性
    真实:恶性 预测:良性 预测错误
    指标:准确率、精确率、召回率、F1-score、AUC指标等 越大越好
    Accyracy:准确率 Precision:精确率 Recall:召回率 F1 score :F1值 AUC:auc指标 【0,1】都是越大越好 最大是1
  2. 回归模型评估— 没有对错之分,只有误差大小 希望误差越小越好
    回归模型y值是连续的 只有误差之说
    指标:rmse mae 计算误差 越小越好 、R2决定系数 [0,1] 越大越好

拟合
机器学习优化理论:误差最小化 为了追求误差最小化可以采取一切手段

  1. 欠拟合
    表现:模型在训练集和测试集表现都不好
    原因:模型过于简单,不能很好的提取规律
  2. 过拟合
    表现:训练集表现好,测试集表现不好
    原因:模型过于复杂,提取了很多训练集特有的规律

你可能感兴趣的:(机器学习,python,机器学习)