Python与机器学习基础 之数据可视化

机器学习中常常会用到大量的数据表,对数据进行可视化有助于对数据进行分析,这里主要介绍几种常用的数据可视化方向,包括表等线性结构、图等网络结构的可视化方法。

Python与机器学习基础 之数据可视化

一、表与线性结构的可视化

Python提供了4种容器结构——list、dict、set、tuple来装载数据,其中线性结构包括两种:list和tuple。因为tuple是只读结构,用于最常用的外部生成器生成的数据,所以 最常用的线性结构是list 。NumPy的矩阵结构可在Matplotlib中实现可视化。例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
import matplotlib.pyplot as plt

#曲线数据加入噪声
X=np.linspace(-5,5,200)
Y=np.sin(X)
yn=Y+np.random.rand(1,len(Y))*1.5 #噪声

#绘图
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(X,yn,c='blue',marker='o')
ax.plot(X,Y+0.75,'r')
plt.show()

其输出结果为:

二、图等网络结构的可视化

图和网络结构是神经网络中重要的数据结构,一般用dict和list进行存储,使用NumPy中的矩阵结构存储点坐标;弧的坐标使用距离计算公式。例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from numpy import *
import matplotlib.pyplot as plt
#import treePlotter as tp

#配置UTF-8输出环境
#reload(sys)
#sys.setdefaultencoding('utf-8')


dist=mat([[0.1,0.1],[0.9,0.5],[0.9,0.1],[0.45,0.9],[0.9,0.8],[0.7,0.9],[0.1,0.45],[0.45,0.1]])
m,n=shape(dist)
fig=plt.figure()

ax=fig.add_subplot(111)
ax.scatter(dist.T[0],dist.T[1],c='blue',marker='o')
for point in dist.tolist():
plt.annotate("("+str(point[0])+","+str(point[1])+")",xy=(point[0],point[1]))
xlist=[]
ylist=[]

for px,py in zip(dist.T.tolist()[0],dist.T.tolist()[1]):
xlist=append(px)
ylist=append(py)
ax.plot(xlist,ylist,'r')
plt.show()

三、树等分支结构的可视化

树是一种非线性的结构,一般用来分类树算法,Python使用dict字典型数据实现存储。Matplotlib没有提供专门绘制树的API.Peter Harrington提供了一个简单绘制树的模块。例:

1
2
3
4
5
6
7
8
9
import numpy as np
import matplotlib.pyplot as plt
import treePlotter as tp

reload(sys)
sys.setdefaultencoding('utf-8')

myTree={'root':{0:'leaf node',1:{'level 2':{0:'leaf node',1:'leaf node'}},2:{'level 2':{0:'leaf node',1:'leaf node'}}}
tp.createPlot(myTree)

1