首页 > 分享 > 使用BP神经网络对鸢尾花数据集分类

使用BP神经网络对鸢尾花数据集分类

zpeien 已于 2022-08-16 21:33:51 修改

于 2022-04-04 10:00:00 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文通过Python的sklearn和TensorFlow库,利用BP神经网络对鸢尾花数据集进行分类。首先,数据集被随机打乱并分为训练集和测试集,然后构建神经网络模型,进行训练。训练过程中,记录损失(loss)并在每个epoch后计算平均损失。最后,评估模型在测试集上的准确率,并可视化训练过程中的损失曲线和准确率曲线。

摘要由CSDN通过智能技术生成

        最近认识的一位大佬搭建的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以去看看:床长人工智能教程

 废话不多说,请看正文!

使用BP神经网络对鸢尾花数据集分类

from sklearn.datasets import load_iris

from pandas import DataFrame

import pandas as pd

x_data = load_iris().data

y_data = load_iris().target

print("x_data from datasets:", x_data)

print("y_data from datasets", y_data)

x_data = DataFrame(x_data, columns=['花萼长', '花萼宽', '花瓣长', '花瓣宽'])

pd.set_option('display.unicode.east_asian_width', True)

print(x_data)

x_data['类别'] = y_data

print("x_data add a column: n", x_data)

from sklearn.datasets import load_iris

from pandas import DataFrame

import pandas as pd

import numpy as np

import tensorflow as tf

from matplotlib import pyplot as plt

import os

import PySide2

dirname = os.path.dirname(PySide2.__file__)

plugin_path = os.path.join(dirname, 'plugins', 'platforms')

os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path

lr = 0.1

train_loss_results = []

test_acc = []

epoch = 300

loss_all = 0

x_data = load_iris().data

y_data = load_iris().target

np.random.seed(116)

np.random.shuffle(x_data)

np.random.seed(116)

np.random.shuffle(y_data)

tf.random.set_seed(116)

x_train = x_data[:-30]

y_train = y_data[:-30]

x_test = x_data[-30:]

y_test = y_data[-30:]

x_train = tf.cast(x_train, tf.float32)

x_test = tf.cast(x_test, tf.float32)

train_db = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)

test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

w1 = tf.Variable(tf.random.truncated_normal([4, 3], stddev=0.1, seed=1))

b1 = tf.Variable(tf.random.truncated_normal([3], stddev=0.1, seed=1))

for epoch in range(epoch):

for step, (x_train, y_train) in enumerate(train_db):

with tf.GradientTape() as tape:

y = tf.matmul(x_train, w1) + b1

y = tf.nn.softmax(y)

y_ = tf.one_hot(y_train, depth=3)

loss = tf.reduce_mean(tf.square(y_ - y))

loss_all += loss.numpy()

grads = tape.gradient(loss, [w1, b1])

w1.assign_sub(lr * grads[0])

b1.assign_sub(lr * grads[1])

print("Epoch {}, loss:{}".format(epoch, loss_all / 4))

train_loss_results.append(loss_all / 4)

loss_all = 0

total_correct, total_number = 0, 0

for x_test, y_test in test_db:

y = tf.matmul(x_test, w1) + b1

y = tf.nn.softmax(y)

pred = tf.argmax(y, axis=1)

pred = tf.cast(pred, dtype=y_test.dtype)

correct = tf.cast(tf.equal(pred, y_test), dtype=tf.int32)

correct = tf.reduce_sum(correct)

total_correct += int(correct)

total_number += x_test.shape[0]

acc = total_correct / total_number

test_acc.append(acc)

print("test_acc", acc)

print("__________________________")

plt.title("Loss Curve")

plt.xlabel("Epoch")

plt.ylabel("Loss")

plt.plot(train_loss_results, label="$Loss$")

plt.legend()

plt.show()

plt.title("Acc Curve")

plt.xlabel("Epoch")import graphviz

plt.ylabel("Acc")

plt.plot(test_acc, label="$Accuracy$")

plt.legend()

plt.show()

结果:

相关知识

BP神经网络鸢尾花红酒数据分类分析与源码实现
基于BP神经网络对鸢尾花的分类的研究
TensorFlow使用BP神经网络实现鸢尾花分类
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
Python 基于BP神经网络的鸢尾花分类
使用鸢尾花数据集构建神经网络模型
基于机器学习的鸢尾花数据集的三分类算法的实现 C++
卷积神经网络实现鸢尾花数据分类python代码实现
搭建简单的神经网络——使用pytorch实现鸢尾花的分类
基于BP神经网络的分类

网址: 使用BP神经网络对鸢尾花数据集分类 https://m.huajiangbk.com/newsview840299.html

所属分类:花卉
上一篇: 民调显示84.7%受访者确认“网
下一篇: 谁在主导美国大选,媒体、民调还是