热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《python机器学习经典实例》——可视化数据

可视化数据简介:数据可视化是机器学习的核心,利用它有助于制定正确的的策略来理解数据。数据的视觉表示帮助我们选择正确的算法。数据的可视化的主要目标之一

可视化数据

简介:

数据可视化是机器学习的核心,利用它有助于制定正确的的策略来理解数据。数据的视觉表示帮助我们选择正确的算法。数据的可视化的主要目标之一就是用图和表清晰的表达数据,以便我们更准确、更有效的交流信息。

       在现实世界中总会存在各种数值数据,我们想将这些数值数据编码成图、线、点、条等,以便直观的显示出这些数值中包含的信息,同时可以使复杂分布的数据更容易被理解和应用。这一过程被广泛应用于各种场合之中,包括对比分析,增长率跟踪、市场分析、民意调查。

       我们用不同的图来展示各个变量之间的模式或关系,比如用直方图展示数据的分布。如果想查找一个特定的测量,可以用表格表示。我们将讨论各种场景下最合适的可视化方式。

画3D散点图

(1)生成一个Python文件,并导入以下程序包

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

(2)生成一个空白图像
fig=plt.figure()
ax=fig.add_subplot(
111,projection='3d')
(3)定义应该生成的值的个数
n=250
(4)生成一个lambda函数来生成给定范围的值
f=lambda minval,maxval,n:minval +(maxval-minval)*np.random.rand(n)
(5)用这个函数生成X,Y和Z值:
x_vals=f(15,41,n)
y_vals=f(-
10,70,n)
z_vals=f(-
52,-37,n)
(6)画出这些值
ax.scatter(x_vals,y_vals,z_vals,c='k',marker='o')
ax.set_xlabel(
'X axis')
ax.set_ylabel(
'Y axis')
ax.set_zlabel(
'Z axis')
plt.show()

运行代码后,结果如图:

 

画气泡图

 

import numpy as np
import matplotlib.pyplot as plt

#定义要生成值的个数
num_vals=40


#生成随机的X值和Y值
#生成随机数

x=np.random.rand(num_vals)
y=np.random.rand(num_vals)


#定义每个点的面积
#指定最大半径

max_radius=25
area=np.pi*(max_radius*np.random.rand(num_vals))**2
#定义颜色
colors=np.random.rand(num_vals)

#画出这些值
#画出数据点

plt.scatter(x,y,s=area,c=colors,alpha=1.0)
plt.show()

 

 

画饼图

 

import numpy as np
import matplotlib.pyplot as plt
#按顺时针方向定义各标签和相应的值
data={
   
'Apple':26,
   
'Mango':17,
   
'Pineapple':21,
   
'Banana':29,
   
'Strawberry':11
}
#定义可视化颜色
colors=['orange','lightgreen','lightblue','gold','cyan']

#定义一个变量以突出饼图的一部分,将其与其他部分离开,如果不想突出任何部分,将所有值设为0
#定义是否需要突出一部分
#explode=(0,0,0,0,0)

explode=(0,0.2,0,0,0)
#画饼图
plt.pie(list(data.values()),explode=explode,labels=data.keys(),
       
colors=colors,autopct='%1.1f%%',
       
shadow=False,startangle=90)
#设置饼图的宽高比,“equal”表示我们希望它是圆形的
plt.axis('equal')
plt.show()

 

运行结果如图所示:

 

画直方图

import numpy as np
import matplotlib.pyplot as plt

#输入数据
#对比苹果和橘子的产量

apples=[30,25,22,36,21,29]
oranges=[
24,33,19,27,35,20]

#设置数组
num_groups=len(apples)

#创建图像
flg,ax=plt.subplots()
#定义x轴
indices=np.arange(num_groups)

#直方图的宽度和透明度
bar_width=0.4
opacity=0.6

#画直方图
hist_apples=plt.bar(indices,apples,bar_width,
alpha=opacity,color='g',label='Apples')
hist_oranges = plt.bar(
    indices+bar_width, oranges, bar_width,
alpha=opacity, color='r', label='Oranges')
#设置直方图的参数
plt.xlabel('Month')
plt.ylabel(
'Production quantity')
plt.title(
'Comparing apples and Oranges')
plt.xticks(indices+bar_width,(
'Jan','Feb','Mar','Apr','May','Jun'))
plt.ylim([
0,45])
plt.legend()
plt.tight_layout()

plt.show()

运行结果,如图所示:

6画可视化热力图

import numpy as np
import matplotlib.pyplot as plt

#定义两组数据
group1=['France','Italy','Spain','Portugal','Germany']
group2=[
'Japan','China','Brazil','Russia','Australia']
#生成一个随机二维矩阵
#生成一些随机数

data=np.random.rand(5,5)
#创建一个图像
fig,ax=plt.subplots()

#创建一个热力图
heatmap=ax.pcolor(data,cmap=plt.cm.gray)
#画出这些值
#将坐轴放在图块的中间

ax.set_xticks(np.arange(data.shape[0])+0.5,minor=False)
ax.set_yticks(np.arange(data.shape[
1])+0.5,minor=False)

#让热力图显示成一张表
ax.invert_yaxis()
ax.xaxis.tick_top()



#增加坐标轴标签
ax.set_xticklabels(group2,minor=False)
ax.set_yticklabels(group1,
minor=False)

plt.show()

运行结果,如图所示

 

动态信号的可视化模拟

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#创建一个函数,用于生成阻尼正弦信号
#生成信号数据

def generate_data(length=2500,t=0,step_size=0.05):
   
for count in range(length):
        t+=step_size
        signal=np.sin(
2*np.pi*t)
        damper=np.exp(-t/
8.0)
       
yield t,signal*damper

#定义初始化函数
def initializer():
    peak_val=
1.0
   
buffer_val=0.1
   
#设置这些参数
   
ax.set_ylim(-peak_val*(1+buffer_val),peak_val*(1+buffer_val))
    ax.set_xlim(
0,10)
   
del x_vals[:]
   
del y_vals[:]
    line.set_data(x_vals,y_vals)
   
return line

#定义一个函数来画出这些值
def draw(data):
   
#升级数据
   
t,signal=data
    x_vals.append(t)
    y_vals.append(signal)
    x_min,x_max=ax.get_xlim()
   
#如果这些值超出当前X轴最大值的访问,那么更新X轴最大值并扩展图像
   
if t>=x_max:
        ax.set_xlim(x_min,
2*x_max)
        ax.figure.canvas.draw()
    line.set_data(x_vals,y_vals)

   
return line
if __name__ == '__main__':
   
#创建图形
   
fig,ax=plt.subplots()
    ax.grid()
   
#提取线
   
line, =ax.plot([],[],lw=1.5)
   
#创建变量
   
x_vals,y_vals=[],[]
   
#用动画器对象定义并启动动画:
   
animator=animation.FuncAnimation(fig,draw,generate_data(),
                                    
blit=False,interval=10,repeat=False,init_func=initializer)
    plt.show()

运行结果:

 

 

 

 


推荐阅读
author-avatar
手机用户2502858341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有