鸢尾花数据集可视化
一:鸢尾花数据集
Anderson’s Iris Data Set
1.Iris数据集
1936,Ronald Fisher, The use of multiple measurements intaxonomic problems
- 加拿大的加斯帕半岛
- 同一天的同一个时间段
- 在相同的牧场上
- 由同一个人
- 使用相同的测量仪器
- 3种鸢尾花类别
- 每个类别有50个样本
- 每个样本中包括4种鸢尾花的属性特征,和鸢尾花的品种
- 4个属性
- 花萼长度(Sepal Length)
- 花萼宽度(Sepal Width)
- 花瓣长度(Petal Length)
- 花瓣宽度(Petal Width)
- 1个标签
- 山鸢尾(Setosa)
- 变色鸢尾(Versicolour)
- 维吉尼亚鸢尾(Virginica)
2.下载数据集 get_file()函数
tf.keras.utils.get_file(fname, origin, cache_dir)
参数:
- fname:下载后的文件名;
- origin:文件的URL地址;
- cache_dir:下载后文件的存储位置。C:\Users\Administrator.keras\datasets
返回值:
- 下载后的文件在本地磁盘中的绝对路径。
训练数据集 iris_training.csv 120条数据
测试数据集 iris_test.cvs 30条数据
二:Pandas访问csv数据集
用于数据统计和分析
可以高效、方便地操作大型数据集
1.导入Pandas库
- import pandas as pd
2.读取csv数据集文件
pd.read_csv( filepath_or_buffer, header, names)
- 文件名参数->filepath_or_buffer
- 类型:二维数据表 ——DataFrame
属性 | 描述 |
ndim | 数据表的维数 |
shape | 数据表的形状 |
size | 数据表元素的总个数 |
设置列标题——header参数
- header 的取值是行号,行号从0开始
- header=0,第1行数据做为列标题(默认设置)
- header=None, 没有列标题
设置列标题—— names参数
- 自定义列标题,代替header参数指定的列标题
- 设置names参数,指定新的列标题
3.访问数据
head()函数: 读取前n行数据
- 参数为空时,默认读取二维数据表中的前5行数据
tail()函数:读取后n行数据
- 参数为空时,默认读取二维数据表中的后5行数据
使用索引和切片获取数据
4.显示统计信息
describe()方法: 显示二维数据的统计信息
5.转换为数组
- 使用NumPy中的创建数组函数array()
- 使用DataFrame中的values方法或as_matrix()方法
三:鸢尾花数据集可视化程序实现
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
TRAIN_URL = "http://download.tensorflow.org/data/iris_training.csv"
train_path = tf.keras.utils.get_file("iris_training.csv",TRAIN_URL)
#tf.keras.utils.get_file()返回值是一个绝对路径
COLUMN_NAMES = ["SepalLength","SepalWidth","PetalLength","PetalWidth","Species"] #将数据集每一列标题存放在列表中
df_iris = pd.read_csv(train_path,header=0,names=COLUMN_NAMES) #替换原有数据的第一行,作为列标题
iris = np.array(df_iris) #转换成numpy的二维数组
fig = plt.figure('Iris Data',figsize=(15,15)) #创建figure对象
fig.suptitle("Aderson's iris data set\n(blue->setosa | red->versicolor | green->virginica)") #全局标题
for i in range(4):
for j in range(4):
plt.subplot(4,4,i*4+j+1)
if(i==j):
plt.text(0.3,0.4,COLUMN_NAMES[i],fontsize=15)
else:
plt.scatter(iris[:,j],iris[:,i],c=iris[:,4],cmap='brg') #颜色接口: 0:blue 1:red 2:green
if(i==0):
plt.title(COLUMN_NAMES[j]) #第一行子图标题作为所有行的标签
if(j==0):
plt.ylabel(COLUMN_NAMES[i]) #第一列子图y轴标签作为所有列的标签
plt.tight_layout() #自动调整子图间隔
plt.show() #显示绘图