深度Q网络对鸢尾花分类代码
时间: 2023-12-10 09:37:35 浏览: 110
以下是使用深度Q网络(DQN)对鸢尾花(Iris)数据集进行分类的Python代码:
```python
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
# 读取数据集
data = pd.read_csv('iris.csv')
# 将类别标签编码为数字
le = LabelEncoder()
data['species'] = le.fit_transform(data['species'])
# 分离特征和标签
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
# 创建深度Q网络模型
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=X_train.shape[1]))
model.add(Dense(64, activation='relu'))
model.add(Dense(3, activation='softmax'))
# 编译模型
model.compile(loss='sparse_categorical_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=100, batch_size=16)
# 在测试集上评估模型
score = model.evaluate(X_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
```
运行该代码将会对鸢尾花数据集进行分类,并输出测试集上的准确率。需要注意的是,深度Q网络通常用于强化学习任务,而不是分类任务,因此这段代码仅作为演示目的。
阅读全文