在之前讲解线性回归中,三种梯度下降MGD、BGD与MBGD中已经用到过鸢尾花数据集,没上车的同学可以先瞅瞅:
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(一)——公式推导
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(二)——Python轮子实现
线性回归中,三种梯度下降MGD、BGD与MBGD对比研究(三)——以鸢尾花数据集为例
SetosaIris(狗尾草鸢尾)
,VersicolourIris(杂色鸢尾)
,VirginicaIris(弗吉尼亚鸢尾)
三类,分别用数字0,1,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=')
>>> iris.filename # 这是该数据集在你电脑里的位置
>>> iris.DESCR # 这是数据集的描述
当然,我们已经说了,变量iris
基础自字典,所以我们也可以用字典的方式读入,比如:
>>> iris['data']
>>> iris['target']
嘿嘿,说了这么多,有的老铁可能已经烦了,现在我们导入数据集,为下一节运行神经网络做准备
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) # 随机数种子
下一篇,我们用tf2
来搭建神经网络:
tensorflow2.0实现鸢尾花数据集的分类(2)——神经网络搭建