鸢尾花数据集是一个非常经典的分类数据集,数据集全名为 Iris Dataset,总共包含 150行数据。每一行由4个特征值及1个目标值(类别变量)组成。其中4个特征值分别是尊片长度、尊片宽度、花瓣长度、花瓣宽度。目标值为 3 种不同类别的尾花:山鸢尾、变色鸢尾、维吉尼亚鸢尾。根据鸢尾花数据集构建鸢尾花分类模型,并对模型进行评估。 实现思路及步骤: (1)从sklearn.datasets数据集中加载鸢尾花数据集。 (2)由于原始数据有一定顺序,顺序不打乱会影响准确率,因此采用 seed 方法生成随机数用的整数起始值,并采用 shuffle 方法随机打乱数据集。 (3)将数据集划分训练集和测试集,训练集为前 120 行,测试集为后 30 行。 (4)将图像数据类型转换为 float32。 (5)构建尾花分类网络并对其进行编译。 (6)对编译好的分类网络进行训练。 (7)对模型进行评估。
时间: 2023-06-09 17:02:12 浏览: 201
鸢尾花数据集,三种分类,四种特征
好的,我已经记录下来了,我的回答如下:
实现思路及步骤:
(1) 载入鸢尾花数据集,并通过打印输出的方式查看数据集的特征信息和目标值信息。
```python
from sklearn.datasets import load_iris
iris = load_iris()
print("{:^10}|{:^10}|{:^10}|{:^10}|{:^10}".format("SepalLength","SepalWidth","PetalLength","PetalWidth","Class"))
print("{:^10}|{:^10}|{:^10}|{:^10}|{:^10}".format("-"*10,"-"*10,"-"*10,"-"*10,"-"*10))
for i in range(len(iris.target)):
print("{:^10.1f}|{:^10.1f}|{:^10.1f}|{:^10.1f}|{:^10}".format(iris.data[i][0],
iris.data[i][1], iris.data[i][2], iris.data[i][3], iris.target_names[iris.target[i]]))
```
(2) 生成随机数用的整数起始值,并采用 shuffle 方法随机打乱数据集。
```python
import numpy as np
np.random.seed(10)
shuffle_indices = np.random.permutation(np.arange(len(iris.target)))
iris.data = iris.data[shuffle_indices]
iris.target = iris.target[shuffle_indices]
```
(3) 将数据集划分训练集和测试集,训练集为前120行,测试集为后30行。
```python
train_data = iris.data[:-30]
train_target = iris.target[:-30]
test_data = iris.data[-30:]
test_target = iris.target[-30:]
```
(4) 将图像数据类型转换为 float32。
```python
train_data = train_data.astype(np.float32)
test_data = test_data.astype(np.float32)
```
(5) 构建尾花分类网络并对其进行编译。
```python
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(4,)))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
```
(6) 对编译好的分类网络进行训练。
```python
model.fit(train_data, train_target, epochs=50, batch_size=16, validation_split=0.1)
```
(7) 对模型进行评估。
```python
test_loss, test_acc = model.evaluate(test_data, test_target)
print('Test accuracy:', test_acc)
```
以上就是基于鸢尾花数据集构建分类模型的实现步骤。
阅读全文