使用神经网络完成鸢尾花分类
时间: 2023-06-28 19:12:09 浏览: 58
好的,鸢尾花分类是一个常见的机器学习问题,我们可以使用神经网络来解决它。首先,我们需要导入必要的库和数据集。
```python
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 导入数据集
iris = load_iris()
X, y = iris.data, iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们需要构建神经网络模型。在这个例子中,我们将使用一个包含两个隐藏层的全连接神经网络。
```python
# 构建神经网络模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(3, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
```
然后,我们可以使用训练集来训练模型。
```python
# 训练模型
history = model.fit(X_train, y_train, epochs=100, validation_split=0.2)
```
最后,我们可以使用测试集来评估模型的性能。
```python
# 评估模型
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print('Test loss: ', test_loss)
print('Test accuracy: ', test_accuracy)
```
完整代码如下:
```python
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 导入数据集
iris = load_iris()
X, y = iris.data, iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建神经网络模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),
tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(3, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 训练模型
history = model.fit(X_train, y_train, epochs=100, validation_split=0.2)
# 评估模型
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print('Test loss: ', test_loss)
print('Test accuracy: ', test_accuracy)
```