【神经网络】tensorflow实验4--Matplotlib数据可视化

news2024/12/25 15:36:25

1. 实验目的

①掌握Matplotlib绘图基础

②运用Matplotlib,实现数据集的可视化

③运用Pandas访问数据集

2. 实验内容

①绘制散点图、直方图和折线图,对数据进行可视化

②下载波士顿数房价据集,并绘制数据集中各个属性与房价之间的散点图,实现数据集可视化

③使用Pandas访问csv数据集,对数据进行设置列标题、读取数据、显示统计信息、转化为Numpy数组等操作;并使用Matpoltlib对数据集进行可视化

3. 实验过程

题目一:

这是一个商品房销售记录表,请根据表中的数据,按下列要求绘制散点图。其中横坐标为商品房面积,纵坐标为商品房价格

 

要求:

1. 绘制散点图,数据点为红色圆点;

2. 标题为:“商品房销售记录”,字体颜色为蓝色,大小为16;

3. 横坐标标签为:“面积(平方米)”,纵坐标标签为“价格(万元)”,字体大小为14。

 代码

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = 'SimHei'   #黑体

x = [137.97,104.5,100,124.32,79.2,99,124,114,106.69,138.05,53.75,46.91,68,63.02,81.26,86.21]

y = [145,110,93,116,65.32,104,118,91,62,133,51,45,78.5,69.65,75.69,95.3]

plt.xlabel("面积(平方米)",fontsize = 14)  #横坐标标签为:“面积(平方米)”,纵坐标标签为“价格(万元)”,字体大小为14。

plt.ylabel("价格(万元)",fontsize = 14)

plt.scatter(x,y,36,color= "r",marker='o')  #绘制散点图,数据点为红色圆点;

plt.title('商品房销售记录',color = "b",fontsize = 16)   #标题为:“商品房销售记录”,字体颜色为蓝色,大小为16;

plt.show()

② 实验结果

 题目二:

按下列要求完成程序。

(1)下载波士顿数据集,读取全部506条数据,放在NumPy数组x、y中(x:属性,y:标记)。

(2) 使用全部506条数据,实现波士顿房价数据集可视化,如图1所示。

(3) 要求用户选择属性,如图2所示,根据用户的选择,输出对应属性的散点图,如图3所示。

 

图1 波士顿房价数据集可视化图

请用户输入属性:

 

图2 属性选择图

运行结果:

 

图3 运行结果图

 代码

import matplotlib.pyplot as plt

import tensorflow as tf

def Print_Choose():    #打印选项

    print('1--CRIM\n2--ZN\n3--INDUS\n4--CHA\n5--NOx6--RM\n7--AGE\n8--DIS\n9--RAD\n10--TAX\n11--PTRATIO\n12--B-100o\n13--LSTAT')

def Choose(num):   #画相应散点图

    plt.scatter(train_x[:, num], train_y)    #绘制散点图   train_x[:, num]:平均房间数    train_y:房价

    plt.xlabel(titles[num])            #横坐标标签名

    plt.ylabel("Price($1000's)")       #纵坐标标签名

    plt.title(str(num + 1) + "." + titles[num] + "- Price")   #总标签

    plt.show()

def Show():

    for i in range(13):  # 绘制子图

        plt.subplot(4, 4, (i + 1))

        plt.scatter(train_x[:, i], train_y)

        plt.xlabel(titles[i])

        plt.ylabel("Price($1000's)")

        plt.title(str(i + 1) + '.' + titles[i] + " - Price")

    plt.show()

if __name__ == '__main__':

    boston_housing = tf.keras.datasets.boston_housing

    (train_x, train_y), (_, _) = boston_housing.load_data(test_split=0)       #获取相应数据  给train_x。train_y

    plt.rcParams['font.sans-serif'] = ['SimHei']                       #用来正常显示中文标签

    plt.rcParams['axes.unicode_minus'] = False                         #用来正常显示负号  坐标轴的负号正常显示

    titles = ["CRIM", "ZN", "INDUS", "CHAS", "NOx", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B-100o", "LSTAT"]

    plt.figure(figsize=(10, 10))   #设置绘图尺寸

    plt.suptitle("各个属性与房价的关系", x=0.5, y=0.95, fontsize=12)  # 最上面的大标签  调整后不用显示  画布上看不见

    Show()

    Print_Choose()

    num =int( input('请选择属性:'))

    Choose(num-1)

 实验结果

 

拓展题(选做):

使用鸢尾花数据集,绘制如下图形,其中对角线为属性的直方图。

提示:绘制直方图函数 plt.hist(x, align= 'mid', color, edgecolor)

 

 代码

import tensorflow as tf

import numpy as np

import pandas as pd   #数据统计集

import matplotlib.pyplot as plt

TRAIN_URL = "http://download.tensorflow.org/data/iris_training.csv"   #训练数据集的地址

train_path = tf.keras.utils.get_file(TRAIN_URL.split('/')[-1],TRAIN_URL)      #下载数据集

COLUMN_NAMES = [ 'SepalLength', 'Sepalwidth','PetalLength', 'Petalwidth', 'Species']#定义列标题列表名字

df_iris = pd.read_csv(train_path,names = COLUMN_NAMES,header = 0)  #train_path  读取文件名   表头名字 names = COLUMN_NAMES,header= 0以names为列标题

iris=np.array(df_iris)     #转换成数组

fig = plt.figure( 'Iris Data', figsize=(15,15))

fig. suptitle("Anderson's Iris Data Set\n(Bule->Setosa| Red-Versicolor / Green->Virginica)",fontsize=20)

plt.hist(COLUMN_NAMES[0])

for i in range(4):

    for j in range(4):

        plt.subplot(4,4,4*i+(j +1))

        if (i == j):

            plt.hist(iris[:, i], align='mid', color="royalblue", edgecolor="black")  # 绘制直方图

        else:

            plt.scatter(iris[:,j], iris[:,i],c=iris[:,4], cmap='brg')   #取所有行,第J列   c为所绘制的颜色为数据集的最后一列标签决定  颜色变换012 蓝红绿

        if(i == 0):

            plt.title(COLUMN_NAMES[j])    #每个图对应的标题

        if(j == 0 ):

            plt.ylabel(COLUMN_NAMES[i])   #纵坐标标签名字

plt.show()

 实验结果

 

5. 实验小结

① 实验过程中遇到了哪些问题,你是如何解决的?

无问题

② 根据题目二的数据进行可视化结果,分析波士顿数据集中各个属性对房价的影响。

占地面积与房价大致呈线性相关关系。

ZN超过25000平方英尺的住宅用地所占比例对价格影响不大

eINDUS 城镇非零售业务地区的比例越高,价格越低

CHAS 查尔斯河虚拟变量对价格影响不大

NOX一氧化氨浓度(每1000万份)越高,价格越低

RM平均每居民房数越多,价格越高

AGE 在1940年之前建成的所有者占用单位的比例越高,价格越低

eDIS与五个波士顿就业中心的加权距离影响不大

RAD辐射状公路的可达性指数影响不大心

TAX 每10.000美元的全额物业税率越高,价格越低

eRTRATIO城镇师生比例越高,价格越低

B1000(Bk-0.632其中Bk是城镇黑人的比例影响不大

LSTAT 人口中地位较低人群的百分数越高,价格越低

③ Numpy和Pandas各有什么特点和优势?

NumPy已经做了相当程度的优化,可以对大数组的数据进行高效处理NumPy除了在相当程度上优化了Python计算过程,其自身还有较多的高级特性由于NumPy几乎仅专注于数组处理,另一方面则是数据分析牵涉到的数据特性众多,需要处理各种表格和混杂数据。pandas 含有使数据清洗和分析工作变得更快更简单的数据结构与操作工具。经常是和其他工具一起使用,如数值计算工具NumPy和SciPy,分析库statsmodels与scikit-learn,以及数据可视化库matplotlib。

④ 在题目基本要求的基础上,你对每个题目做了那些扩展和提升?或者你觉得在编程实现过程中,还有哪些地方可以进行优化?

在第二题中显示用户选择的图片,显然这中间有些冲突,应该将两者分开实现,减少了代码的冲突。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人人可用的敏捷指标工具!Kyligence Zen 正式发布 GA 版

4 月 11 日,Kyligence 指标平台产品发布会成功召开。发布会上,一站式指标平台 Kyligence Zen 正式推出 GA 版,接下来这款人人可用的敏捷指标工具将以更加完善、成熟、稳定的产品性能与功能解决企业面临的指标管理、分析和应用痛点 &#xff0…

【信息论】一、信息与信息论

“The fundamental problem of communication is that of reproducing at one point either exactly or approximately a message selected at another point.” —— Claude Elwood Shannon 1.1 信息的定义 什么是信息?它与消息、信号之间有什么区别和联系&#…

指纹识别q

1、指纹传感器 FTIR(Frustrated Total Internal Reflection),受抑全内反射。在屏幕的夹层中加入LED光线,当用户按下屏幕时,使夹层的光线造成不同的反射效果,感应器接收光线变化而捕捉用户的施力点。 明显的缺点:体积太…

弹塑性力学--应变硬化

在单轴拉伸试验中,当应力超过屈服强度后,需要施加更大的载荷产生更大的应力,才会使材料发生更多的塑性变形。随着塑性应变的增加,材料变得更强、更难以变形了,因此这个阶段称为“应变硬化”(Strain Hardeni…

数据库----------唯一约束、默认约束、零填充约束

目录 1.唯一约束(Unique) 1.概念 2.语法 3.添加唯一约束 4.删除唯一约束 2.默认约束(default) 1.概念 2.语法 3.添加默认约束 4.删除默认约束 3.零填充约束(zerofill)了解即可 1.概念 2.操作 3.删除 1.唯一约束&…

如来十三掌(与佛论禅、Rot13编码)

下载附件打开是一串... 佛经 666 这个编码方式还真是第一次遇见----与佛论禅 对文本进行与佛论禅密码解密 得到 MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9 根据题目提示,如来十三掌,猜测是rot13加密,进行rot13解码 得到 Z…

Cloud computing

Cloud computing 可以看到右侧的容器虚拟化架构中,不需要运行额外的OS,这样启动的服务性能会相比于通过虚拟化软件实现的架构更优秀。但是虚拟机同样也有它的优点,比如它的安全、隔离性,可以运行不同的操作系统等等。 Virtualiz…

EasyCVR平台基于GB28181协议的语音对讲配置操作教程

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…

企业网站架构LAMP部署与优化(apache、mysql、php)

目录LAMP概述与简介编译安装Apache http服务1、关闭防火墙,将安装Apache所需软件包传到/opt/apache目录下2、在opt/apache目录下安装http所需软件包3、解压以下文件4、将解压的两个文件移到相应目录5、安装环境依赖包6、配置软件模块7、编译安装8、优化配置文件路径…

【linux】:linux下文件的使用以及文件描述符

文章目录 前言一、linux系统中的文件操作以及文件接口二、文件描述符 1.文件描述符的分配规则2.重定向总结前言 理解文件原理和操作: 我们先快速回忆下一C语言的文件操作: 首先看一下fopen函数的使用,然后我们写一段简单的C语言打开文件的代…

使用conda来管理虚拟环境

百度miniconda 下载windows版,安装的时候添加环境变量Conda -info -e 可以看到只有一个虚拟环境​ ​​​​​​3.Conda命令 (1&#x…

高效学习方法分享和学习工具推荐

方法不对,努力白费;方法对了,事半功倍! 口号喊起来,气氛拉满! 我现在是吉林大学计算机科学与技术大四在读(2023春季学期),刚好趁这个活动回顾一下我的大学生活。上过大学…

Android: 在wsl中使用libevent实现http服务器,并编写Android app 实现文件下载

在wsl中使用libevent实现http服务器,并编写Android app 实现文件下载 PC端: 在WSL中编译libevent-2.1.8-stable sample中的http-server.c,实现http测试用服务器 Makefile如下: #指定源文件为*.c src $(wildcard *.c) #通过src…

houjie-cpp面向对象

houjie 面向对象 面向对象(上) const 在一个函数后面放const,这个只能修饰成员函数,告诉编译器这个成员函数不会改数据 const还是属于函数签名的一部分。 引用计数:涉及到共享的东东,然后当某个修改的时候&…

Java的时代依然还在,合格的Java工程师成为紧缺人才

Java的时代依然还在,合格的Java工程师成为紧缺人才编程语言的世界变化莫测,在其中浮浮沉沉28年的Java,也经历见证了很多语言的兴起和衰败。在最新的编程语言排行榜中,Java依旧位居前三,可见Java的发展后劲有多强&#…

BlockCanary 卡顿监测

作者:海象 前言 最近在处理项目中的拍摄视频后上传界面卡顿的问题,找到 BlockCanary 这个工具来定位,由于不支持高版本 Android,当时在定位卡顿时先将项目的 targetSdk 版本降下来,当然这不是个长久的办法,打算花一点时间适配下高版本,先过一遍源码流程 网上很多博…

ESP32 分区表

ESP32 分区表 1. 分区表概述 ESP32 针对 flash 进行划分,划分为不同的区域用作不同的功能,并在flash的 0x8000 位置处烧写了一张分区表用来描述分区信息。 分区表可以根据自己的需要进行配置,每一个分区都有其特定的作用,可根据…

有学生问我,重构是什么?我应该如何回答?

重构到底是什么?只是代码的推倒重新编码?还是有规则、有方法可寻?当然,结论肯定是有的,本文,我们通过一个简单的实例,来理解一下重构。 1.借助一个实例需求 这是一个影片出租店用的程序&#…

管理笔记2职级管理

一职级目的: 1 员工发展的职业通道 2 招聘、晋升的公平性 二 能力模型 类似职级 三 晋升 当前级别的事做到了,已经做到下一个级别的事 考虑点:1考虑当前阶段时间,不会频繁晋升,2考虑绩效。 不断成长、主动做事&a…

认证授权SpringSecurity

如何引入SpringSecurity作为项目的权限认证服务 1.引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId> </dependency> <dependency><groupId>org.…