实现神经网络模型对蘑菇的可食用性分类,python代码
时间: 2024-05-06 14:16:02 浏览: 193
下面是一个简单的蘑菇可食用性分类的神经网络模型的Python代码实现,使用Keras框架进行编写:
```python
import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 读取数据集
data = pd.read_csv("mushrooms.csv")
# 将数据集中的类别特征转换为数值特征
for col in data.columns:
data[col] = pd.Categorical(data[col]).codes
# 分离特征和标签
X = data.drop("class", axis=1)
y = data["class"]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建神经网络模型
model = Sequential()
model.add(Dense(32, input_dim=X_train.shape[1], activation="relu"))
model.add(Dense(16, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
# 编译模型
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))
# 评估模型
_, accuracy = model.evaluate(X_test, y_test)
print("Accuracy: %.2f%%" % (accuracy*100))
```
这里使用了一个包含32个神经元的输入层,一个包含16个神经元的隐藏层和一个包含1个神经元的输出层的神经网络模型,使用ReLU作为激活函数(除了输出层使用sigmoid函数),二元交叉熵作为损失函数,Adam作为优化器。在训练过程中,使用了50个epoch和32个批次大小。最后评估模型的准确率(accuracy)。
阅读全文