tensorflow2.0实现鸢尾花数据集的分类(1)——鸢尾花数据的读入(详解)

在之前讲解线性回归中,三种梯度下降MGD、BGD与MBGD中已经用到过鸢尾花数据集,没上车的同学可以先瞅瞅:
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(一)——公式推导
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(二)——Python轮子实现
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(三)——以鸢尾花数据集为例

1.鸢尾花数据集再介绍:
  • 鸢尾花数据集共有数据150
  • 每组包括花萼长、花萼宽、花瓣长、花瓣宽4个输入特征
  • 同时给出了每一组特征对应的鸢尾花类别
    类别包括SetosaIris(狗尾草鸢尾)VersicolourIris(杂色鸢尾)VirginicaIris(弗吉尼亚鸢尾)三类,分别用数字0,1,2表示
    在这里插入图片描述
2.sklearn导入数据集介绍

sklearn全称Scikit learn, 是机器学习领域当中最知名的python模块之一
sklearn中不但包含了很多种机器学习的算法,而且还可以加载数据集合
主要通过sklearn.datasets.load_*sklearn.datasets.fetch_*来加载

  • sklearn.datasets.load_*主要加载小数据集
    sklearn.datasets.load_iris()加载鸢尾花数据集
  • sklearn.datasets.fetch_*主要加载大数据集(很有可能有在线下载)
    sklearn.datasets.fetch_20newsgroups,加载互联网新闻数据集**(需在线下载14MB,很慢)**

以上两种函数都会返回一个datasets.base.Bunch对象,该对象继承自字典,有这样几个属性:
['DESCR', 'data', 'feature_names', 'filename', 'target', 'target_names']

接下来我们读入鸢尾花数据集来说明这几个属性:

>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> iris.data # 这是我们需要的数据
array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2],
       ......
       [6.3, 2.5, 5. , 1.9],
       [6.5, 3. , 5.2, 2. ],
       [6.2, 3.4, 5.4, 2.3],
       [5.9, 3. , 5.1, 1.8]])

>>> iris.target # 这是我们需要的标签值
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       ......
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

>>> iris.feature_names # 数据集特征所对应的名字
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
 
>>> iris.target_names # 数据集标签所对应的名字
array(['setosa', 'versicolor', 'virginica'], dtype='<U10')

>>> iris.filename # 这是该数据集在你电脑里的位置
>>> iris.DESCR # 这是数据集的描述

当然,我们已经说了,变量iris基础自字典,所以我们也可以用字典的方式读入,比如:

>>> iris['data']
>>> iris['target']
3.导入鸢尾花数据集

嘿嘿,说了这么多,有的老铁可能已经烦了,现在我们导入数据集,为下一节运行神经网络做准备

from sklearn.datasets import load_iris 
x_data = load_iris().data    # 返回 iris 数据集所有输入特征 
y_data = load_iris().target   # 返回 iris 数据集所有标签 

做一点儿说明,x_data是二维numpy数组,y_data是一维numpy数组


接下来要做的是,训练集测试集分离,我们可以手动分离,也可以调用函数分离
(1).我们先手动分离

import numpy as np
# 正式分离数据之前,我们要先将数据打乱
np.random.seed(2718) # 必须使用相同的 seed,使输入特征/标签一一对应 
np.random.shuffle(x_data) # 
np.random.seed(2718) 
np.random.shuffle(y_data)
tf.random.set_seed(2718) 
# 分离数据集
x_train = x_data[:-30] 
y_train = y_data[:-30] 
x_test = x_data[-30:] 
y_test = y_data[-30:] 

(2).调用函数分离
使用sklearn.model_selection.train_test_split函数实现分离

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x_data, 
													y_data, 
													test_size=0.2,      # 测试集比例
													random_state=2718)  # 随机数种子
发布了29 篇原创文章 · 获赞 8 · 访问量 2684

猜你喜欢

转载自blog.csdn.net/HaoZiHuang/article/details/105050524