鸢尾花数据集可视化

一:鸢尾花数据集

鸢尾花数据分析步骤 鸢尾花数据集可视化_tensorflow

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()方法: 显示二维数据的统计信息

鸢尾花数据分析步骤 鸢尾花数据集可视化_机器学习_02

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()  #显示绘图

鸢尾花数据分析步骤 鸢尾花数据集可视化_tensorflow_03