定位:
作为人工智能领域(数据挖掘/机器学习的方向)的基础课程,为长期从事人工智能方向打下坚实的基础。
面向过程的画图方法
目标:
- 应用Matplotlib实现数据挖掘领域的可视化分析过程
- 应用Numpy实现数据挖掘领域的数据计算过程
- 应用Pandas实现数据挖掘领域的数据处理过程
- 熟练应用金融股票数据的基本数据分析与挖掘
环境的搭建
- 完成数据挖掘基础阶段的所有环境安装
- 应用jupyter notebook完成代码编写运行
- 整个数据挖掘基础阶段会用到Matplotlib、Numpy、Pandas、Ta-Lib等库,为了统一版本号在环境中使用,将所有的库及其版本号放到了文件requirements.txt中,然后统一安装
新建一个用于人工智能环境的虚拟环境
mkvirtualenv -p python3 ai
# 其中python3为python的版本号,ai为创建的虚拟环境的名字,如果没有安装mkvirtualenv,可以百度一下安装方法
安装库
pip install matplotlib
pip install pandas
pip install jupyter
JupyterNotebook
介绍:
为什么使用Jupyter Notebook
- 传统软件开发:工称/目标明确
- 需求分析,设计构架,开发模块,测试
- 数据挖掘:艺术/目标不明确
- 目的是具体的洞察目标,而不是机械的完成任务
- 通过执行代码来理解问题
- 迭代式地改进代码来改进解决方法
- 实时运行的代码、叙事性的文本和可视化被整合在一起,方便使用代码和数据来讲述故事
总结:Jupyter Notebook 相比 Pycharm、Ipython在画图和数据展示方面更有优势。
快速上手 JupyterNotebook
启动:
- 界面启动:
环境搭建好后,本机输入jupyter notebook命令,会自动弹出浏览器窗口打开Jupyter Notebook
# 进入虚拟环境
workon ai
# 输入命令
jupyter notebook
# 也可以使用命令:ipython notebook 打开
# 本地notebook的默认URL为:http://localhost:8888
- 想让notebook打开指定目录,只要进入此目录后执行命令即可
相关操作:
cell操作
中文版如下:
二级缩进的前面是tab键+中横线
Jupyter Lab的介绍:
pip install jupyterlab
# 输入命令
jupyter lab
Matplotlib
学习目标
什么是Matplotlib
为什么要学习Matplotlib:
其他的一些绘图库:
https://echarts.apache.org/zh/index.html
https://d3js.org/
提示:由于数据知识给我们自己看进行分析的,所以,一些酷炫的效果,需要写更多的代码,为了节省时间,所以,机器学习和深度学习中一般是使用matplotlib
总结:
快速上手Matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
# %matplotlib inline是jupyter notebook里的命令, 意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口。
# 1、创建画布(容器层)
plt.figure()
# 2、绘制折线图(图像层)
plt.plot([1,0,9],[4,5,6])
# 3、显示图像
plt.show()
完善折线图(画布层)
- 为了更好的理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用。
demo:展现上海一周的天气
设置画布属性(设置画布大小):
图片保存:
修改x、y轴刻度:
- random.uniform(x, y) 方法将随机生成一个实数,它在 [x,y] 范围内。
- x – 随机数的最小值,包含该值。
- y – 随机数的最大值,不包含该值。
- 返回一个浮点数。
api如下:
具体演示如下:
我们发现y轴的刻度太密了,想要稀疏一下
也可以下面这样:
在x轴刻度上想要显示中文:
注意:x轴的刻度说明数量需要与x轴的数据数量一致。
中文问题解决:
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['Simhei'] # 显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负号
添加网格显示:
第一个参数不写也可以,因为默认就是显示网格:
在jupyter notebook中查看源码(文档说明)
或是:
具体演示如下:
显示图例
调整图例的位置:
上面是面向过程的画图方法,下面是面向对象的画图方法
面向对象的画图方法
北京和上海的天气图显示在同一个图的不同坐标系当中
- 提示:下面的nrows和ncols表示将画布分为了一行两列的区域,然后就可以在不同的区域中显示不同的图。
- 提示:plt.subplots()它的返回值有两个,figure表示图对象,axes表示可以设置各种属性的方法,比如设置标题…
https://matplotlib.org/api/axes_api.html#ticks-and-tick-labels
下面是数学的正弦函数图
- numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
- 产生从start到stop的等差数列,num为元素个数,默认50个,多用于模型训练。
常见图形种类以及意义:
散点图的具体演示:探究房屋面积和房屋价格的关系。
房屋面积数据:
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64,
163.56, 120.06, 207.83, 342.75, 147.9 , 53.06, 224.72, 29.51,
21.61, 483.21, 245.25, 399.25, 343.35]
房屋价格数据:
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9 , 239.34,
140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1 ,
30.74, 400.02, 205.35, 330.64, 283.45]
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams[‘font.sans-serif’] = [‘Simhei’] # 显示中文
plt.rcParams[‘axes.unicode_minus’] = False # 显示负号
散点图的应用场景:探究不同变量之间的内在关系。