热门标签 | 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()

运行结果:

 

 

 

 


推荐阅读
  • 社交网络中的级联行为 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 使用Python与OpenCV实现多实例掩膜图像的绘制
    本文介绍了一种方法,通过Python和OpenCV库来创建和显示多实例掩膜图像,其中不同的颜色代表不同的实例,而白色的边界线则用于区分各个实例。适合对图像处理和计算机视觉感兴趣的读者。 ... [详细]
  • 面临考试压力,急需解决四个编程问题,包括实现乒乓球的动态效果、计算特定日期是一年的第几天、逆序输出数字以及创建弹出菜单。每个问题的解决都能在TC3.0环境中获得50分。 ... [详细]
  • C# WPF 打字射击游戏开发
    介绍了一个基于C#和WPF技术的简单打字射击游戏的实现方法,包括字母的生成、移动、消除以及基本的游戏界面设计。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 本文介绍了两种使用Java发送短信的方法:利用第三方平台的HTTP请求和通过硬件设备短信猫。重点讲解了如何通过Java代码配置和使用短信猫发送短信的过程,包括必要的编码转换、串口操作及短信发送的核心逻辑。 ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
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社区 版权所有