基于MLP回归的鸢尾花花瓣长度预测

基于MLP回归的鸢尾花花瓣长度预测

基于MLP回归的鸢尾花花瓣长度预测

1.作者介绍

郝梦月,女,西安工程大学电子信息学院,2024级研究生

研究方向:模式识别与智能系统

电子邮件:[email protected]

王晓睿,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组

研究方向:智能视觉检测与工业自动化技术

电子邮件:[email protected]

2.MLP算法原理

2.1 MLP简介

多层感知器(MLP)是为了创建决策边界,把多个感知器合并成为一个更大的网络。MLP一般至少由三层组成,其中第一层为数据集的每个输入特征,都有一个节点,最后一层有每个类标签的结点。它的显著特性是:如果网络足够大,那么他们可以表示任意的数学函数;且非线性映射能力和适应性强,能处理各种复杂的模式识别问题。

MLP神经网络属于前馈神经网络的一种。在网络训练过程中,需要通过反向传播算法计算梯度,将误差从输出层反向传播回输入层,用于更新网络参数。

2.2 MLP组成

(1)输入层:用于接收输入数据并将其传递到隐藏层。输入层中的神经元数量等于输入特征的数量。

(2)隐藏层:由一层或多层神经元组成,用于执行计算并转换输入数据。可以通过调整每层中的隐藏层和神经元的数量,以优化网络性能。

(3)激活函数:对隐藏层中每个神经元的输出应用非线性变换。常见的激活函数包括 Sigmoid、ReLU、tanh 等。

(4)输出层:网络的最终输出,例如分类标签或回归目标。输出层中的神经元数量取决于具体的数据,例如分类问题中的类别数量。

(5)权重和偏差:可调节参数,决定相邻层神经元之间的连接强度以及每个神经元的偏差。这些参数在训练过程中学习,以尽量减少网络预测与实际目标值之间的差异。

(6)损失函数:衡量网络预测与实际目标值之间的差异。MLP 的常见损失函数包括回归任务的均方误差和分类任务的交叉熵。

3.基于MLP回归的鸢尾花花瓣长度预测

3.1 数据集介绍

(1)scikit-learn(sklearn)库中常用的内置数据集。

(2)鸢尾花数据集(Iris Dataset)包含150个样本,将其分为3类,每类50个样本,每个样本有4个特征,分别是:花萼的长度和宽度、花瓣的长度和宽度,单位为厘米。

3.2 实验步骤

(1)导入必要的库。

(2)加载数据集并对其进行测试集和训练集的划分。本实验将数据集的20%划分为测试集,80%作为训练集。设置随机种子为30,确保每次运行代码时划分的结果一致。

(3)将数据进行标准化处理,消除量纲之间的差异,使得模型训练更加稳定和高效。

(4)调整参数,最终设置了三个隐藏层,每层10个神经元。激活函数采用relu(线性整流函数),优化算法采用adam(适应性矩估计),最大迭代次数设置为1000次。

(5)训练模型并计算相关参数MSE和R2。

(6)可视化实验数据。

3.3 实验代码

python 复制代码
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征矩阵 (150, 4)
y = iris.data[:, 2]  # 花瓣长度作为目标变量
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=30)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 创建MLP回归模型
mlp = MLPRegressor(hidden_layer_sizes=(10, 10, 10),  # 三个隐藏层,每层10个神经元
                   activation='relu',          # 激活函数
                   solver='adam',              # 优化器
                   max_iter=1000,             # 最大迭代次数
                   random_state=30)

# 训练模型
mlp.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = mlp.predict(X_test)
# 计算均方误差和R²分数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error: {mse:.4f}")
print(f"R² Score: {r2:.4f}")

# 绘制真实值与预测值的对比图
plt.scatter(y_test, y_pred, color='blue')
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linestyle='--')
plt.xlabel('True Petal Length')
plt.ylabel('Predicted Petal Length')
plt.title('True vs Predicted Petal Length')
plt.show()

3.4 实验结果

MSE越小且R2接近1,说明模型拟合良好。其中,MSE衡量预测误差;R2衡量模型的解释能力。

横轴表示真实的花瓣长度,纵轴表示模型预测的花瓣长度。如果预测完全准确,所有数据点应落在对角线上。本模型所有预测的数据点紧密围绕在对角线周围,说明该模型性能较好。

相关推荐
pen-ai14 分钟前
【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4
人工智能·gpt·深度学习
新智元22 分钟前
Fellou 2.0 震撼发布:你的专属贾维斯,开启 AI 批量化生产新时代
人工智能·openai
大写-凌祁33 分钟前
GLIDE论文阅读笔记与DDPM(Diffusion model)的原理推导
论文阅读·人工智能·笔记·python·深度学习·机器学习·计算机视觉
TAICHIFEI43 分钟前
KITTI数据集(计算机视觉和自动驾驶领域)
图像处理·人工智能·深度学习·计算机视觉
小Mie不吃饭1 小时前
SpringBoot接入Kimi实践记录轻松上手
人工智能·spring
科技小E2 小时前
嵌入式SDK技术EasyRTC音视频实时通话助力即时通信社交/教育等多场景创新应用
人工智能·音视频
ARM2NCWU2 小时前
高通SoC阵列服务器
人工智能
编程有点难2 小时前
Python训练打卡Day38
人工智能·python·深度学习
LeeZhao@2 小时前
【AGI】Qwen3混合推理模型微调数据集
人工智能·数据挖掘·aigc·agi
whaosoft-1432 小时前
51c大模型~合集134
人工智能