构建一个简单的基于TensorFlow的多层感知器(MLP)神经网络(用于分类任务)

构建一个简单的神经网络使用TensorFlow可以很快地完成。以下是构建一个简单的多层感知器(MLP)用于分类任务的步骤,我们将以鸢尾花数据集(Iris dataset)为例:

1. 导入所需的库

import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from tensorflow.keras.utils import to_categorical

2. 加载和预处理数据

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 将标签转换为One-hot编码
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y.reshape(-1, 1))

# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 将数据标准化
scaler = tf.keras.layers.Normalization(axis=1)
scaler.adapt(X_train)

X_train = scaler(X_train)
X_test = scaler(X_test)

3. 构建模型

# 构建一个简单的MLP模型
model = tf.keras.Sequential([
    tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),  # 输入层,4个特征
    tf.keras.layers.Dense(10, activation='relu'),  # 隐藏层
    tf.keras.layers.Dense(3, activation='softmax')  # 输出层,3个类别
])

4. 编译模型

model.compile(
    optimizer='adam',  # 优化器
    loss='categorical_crossentropy',  # 损失函数
    metrics=['accuracy']  # 评估指标
)

5. 训练模型

# 训练模型
history = model.fit(
    X_train, y_train,
    epochs=100,  # 训练周期
    batch_size=5,  # 批量大小
    validation_split=0.2  # 划分一部分训练数据用于验证
)

6. 评估模型

# 在测试集上评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test accuracy: {accuracy}")

7. 进行预测

# 使用模型进行预测
predictions = model.predict(X_test)
# 将预测结果转换回标签
predicted_classes = tf.argmax(predictions, axis=1)
true_classes = tf.argmax(y_test, axis=1)

8. 查看混淆矩阵

from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 计算混淆矩阵
cm = confusion_matrix(true_classes, predicted_classes)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪 www.enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值