# 一、数据准备

import tensorflow as tf
import numpy as np
import pandas as pd

# 导入数据

# 将标签转换为独热编码
labels = pd.get_dummies(data['species'])
data = pd.concat([data, labels], axis=1)
data = data.drop(columns=['species'])

# 分割为训练集和测试集
train_set = data.sample(frac=0.8, random_state=0)
test_set = data.drop(train_set.index)

# 提取特征和标签
train_features = train_set.iloc[:, :-3].values
train_labels = train_set.iloc[:, -3:].values
test_features = test_set.iloc[:, :-3].values
test_labels = test_set.iloc[:, -3:].values

# 二、构建神经网络模型

# 定义输入特征和标签
inputs = tf.placeholder(tf.float32, shape=[None, 4])
labels = tf.placeholder(tf.float32, shape=[None, 3])

# 定义隐藏层权重和偏差
hidden_weights = tf.Variable(tf.random_normal([4, 10]))
hidden_biases = tf.Variable(tf.zeros([10]))

# 定义输出层权重和偏差
output_weights = tf.Variable(tf.random_normal([10, 3]))
output_biases = tf.Variable(tf.zeros([3]))

# 定义隐藏层和输出层
hidden_layer = tf.nn.relu(tf.matmul(inputs, hidden_weights) + hidden_biases)
output_layer = tf.matmul(hidden_layer, output_weights) + output_biases

# 三、训练模型

# 定义损失函数和优化器
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=output_layer, labels=labels))

# 定义准确率
correct_prediction = tf.equal(tf.argmax(output_layer, 1), tf.argmax(labels, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# 定义迭代次数和批次大小
epochs = 1000
batch_size = 10

# 开始训练模型
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())

for epoch in range(epochs):
for i in range(len(train_features) // batch_size):
batch_features = train_features[i * batch_size: (i + 1) * batch_size]
batch_labels = train_labels[i * batch_size: (i + 1) * batch_size]

sess.run(optimizer, feed_dict={inputs: batch_features, labels: batch_labels})

# 计算训练集准确率
train_acc = sess.run(accuracy, feed_dict={inputs: train_features, labels: train_labels})

if (epoch + 1) % 100 == 0:
print(f"Epoch {epoch+1}/{epochs}, Training Accuracy: {train_acc}")

# 四、评估模型

# 计算测试集准确率
test_acc = sess.run(accuracy, feed_dict={inputs: test_features, labels: test_labels})
print(f"Test Accuracy: {test_acc}")

# 总结

|
6天前
|

Python进阶---网络编程
Python进阶---网络编程
23 2
|
4天前
|

15 0
|
4天前
|

16 0
|
5天前
|

【Linux 网络】网络基础（一）（局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用）-- 详解（下）
【Linux 网络】网络基础（一）（局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用）-- 详解（下）
19 0
|
5天前
|

【Linux 网络】网络基础（一）（局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用）-- 详解（上）
【Linux 网络】网络基础（一）（局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用）-- 详解（上）
14 0
|
5天前
|

20 1
|
6天前
|

25 0
|
6天前
|

61 0
|
7天前
|

python-随机森林后筛选最重要变量，模型准确率、随机森林混淆矩阵结果、基尼系数排序图
python-随机森林后筛选最重要变量，模型准确率、随机森林混淆矩阵结果、基尼系数排序图
14 2
|
7天前
|
Web App开发 负载均衡 前端开发
Python网络数据抓取（7）：Selenium 模拟
Python网络数据抓取（7）：Selenium 模拟
29 5