机器学习常用科学计算库的使用(1、2、3)

1.机器学习概述

  • 人工智能主要分支

    • 1、计算机视觉
    • 2、语音识别
    • 3、文本挖掘/分类
    • 4、机器翻译
    • 5、机器人
  • 机器学习工作流程

  • 机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。

    • 1、获取数据
      • 数据简介
        • 一行数据称为一个样本
        • 一列数据称为一个特征
        • 有些数据有目标值(标签值),有些数据没有目标值(如上表中,电影类型就是这个数据集的目标值)
      • 数据类型构成:
        • 数据类型一:特征值+目标值(目标值是连续的和离散的)
        • 数据类型二:只有特征值,没有目标值
      • 数据分割:
        • 训练数据:用于训练,构建模型
        • 测试数据:在模型检验时使用,用于评估模型是否有效
      • 划分比例:
        • 训练集:70% 80% 75%
        • 测试集:30% 20% 25%
    • 2、数据基本处理
      • 即对数据进行缺失值、去除异常值等处理
    • 3、特征工程
      • 特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程
      • 意义:会直接影响机器学习的效果
      • 1、特征提取:将任意数据(文本/图像)转成数字特征
      • 2、特征预处理:通过转化函数,将特征转化成更加适合模型的数据过程
      • 3、特征降维:不损失或少量损失信息,实现维度(特征个数)减少
    • 4、建立模型
    • 5、模型评估
      • 分类模型评估
      • 回归模型评估
      • 拟合
        • 欠拟合
          • 训练集效果不好 测试集效果也不好
          • 模型过于简单
        • 过拟合
          • 训练集效果好 测试集效果不好
          • 模型过于复杂
          • 模型边缘锯齿状
          • 学习训练数据太充分
  • 深度学习

  • 深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。

  • 库的安装:

matplotlib==2.2.2 ---绘图
numpy==1.14.2---快速计算
pandas==0.20.3---数据处理
tables==3.4.2---HDf5 二进制 
jupyter==1.0.0---运行平台

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

  • Jupyter Notebook使用
  • 两种模式通用快捷键
    • Shift+Enter,执行本单元代码,并跳转到下一单元
    • Ctrl+Enter,执行本单元代码,留在本单元
  • 命令模式:按ESC进入
    • Y,cell切换到Code模式
    • M,cell切换到Markdown模式
    • A,在当前cell的上面添加cell
    • B,在当前cell的下面添加cell
  • 编辑模式:按Enter进入
    • 补全代码:变量、方法后跟Tab键
    • 为一行或多行代码添加/取消注释:Ctrl+/(Mac:CMD+/)
  • 其他(了解)
    • 双击D:删除当前cell
    • Z,回退
    • L,为当前cell加上行号 <!–
    • Ctrl+Shift+P,对话框输入命令直接运行
    • 快速跳转到首个cell,Crtl+Home
    • 快速跳转到最后一个cell,Crtl+End -->
    • 回退:Ctrl+Z(Mac:CMD+Z)
    • 重做:Ctrl+Y(Mac:CMD+Y)

3、Matplotlib

  • matplotlib.pyplot模块
    • import matplotlib.pyplot as plt
  • 图形绘制流程:
    • 1、创建画布 – plt.figure()
    • 2、绘制图像 – plt.plot(x, y)
    • 3、显示图像 – plt.show()
import matplotlib.pyplot as plt

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

# 2.绘制折线图
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])

# 3.显示图像
plt.show()
  • 添加自定义x,y刻度
    • plt.xticks(x, **kwargs):x:要显示的刻度值
    • plt.yticks(y, **kwargs):y:要显示的刻度值
# 增加以下两行代码

# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(40)

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
  • 中文显示问题解决
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
  • 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
  • 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)
  • 图像保存
# 保存图片到指定路径
plt.savefig("test.png")
#注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
  • 完成代码显示:
import matplotlib.pyplot as plt
import random
from pylab import mpl

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]

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

# 2.绘制图像
plt.plot(x, y_shanghai)

# 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])

# 2.2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)

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

# 2.4 图像保存
plt.savefig("./test.png")

# 3.图像显示
plt.show()
3.1在一个坐标系中绘制多个图像
  • 多次plot
# 增加北京的温度数据
y_beijing = [random.uniform(1, 3) for i in x]

# 绘制折线图
plt.plot(x, y_shanghai)
# 使用多次plot可以画多个折线
plt.plot(x, y_beijing, color='r', linestyle='--')
  • 设置图形风格
plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")
  • 显示图例
plt.legend(loc="best")
  • 完整代码:
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

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

# 2.绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.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])

# 2.2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)

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

# 2.4 图像保存
plt.savefig("./test.png")

# 2.5 添加图例
plt.legend(loc=0)


# 3.图像显示
plt.show()
3.2 多个坐标系显示— plt.subplots(面向对象的画图方法)
  • matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区)的图
  • 注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法
# 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)


# 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[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()
  • 折线图的应用场景
    • 呈现公司产品(不同区域)每天活跃用户数
    • 呈现app每天下载数量
    • 呈现产品新功能上线后,用户点击次数随时间的变化
    • 拓展:画各种数学函数图像
import numpy as np
# 0.准备数据
x = np.linspace(-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常见图形绘制

  1. 常见图形种类及意义
  • 折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

    • 特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
    • 关键词:变化
    • api:plt.plot(x, y)
  • 散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    • 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
    • 关键词:规律
    • api:plt.scatter(x, y)
  • 柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。

    • 特点:绘制连离散的数据,比较数据差别和大小。(统计/对比)
    • 关键词:比大小
    • api:plt.bar(x, width, align=‘center’, **kwargs)
  • 直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。

    • 关键词:统计分布
    • 特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
    • api:matplotlib.pyplot.hist(x, bins=None)
    Parameters:    
    x : 需要传递的数据
    bins : 组距
    
  • 饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

    • 关键词:占比
    • 特点:分类数据的占比情况(占比)
    • 注意:数据个数小于0
    • api:plt.pie(x, labels=,autopct=,colors)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值