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

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

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

1.作者介绍

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

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

电子邮件:479997163@qq.com

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

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

电子邮件:3234002295@qq.com

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衡量模型的解释能力。

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

相关推荐
txg6667 分钟前
机器人领域简报(2026年6月7日—14日)
大数据·人工智能·机器人
4A广告文案11 分钟前
品牌负面评论难排查?AI情绪分析实时抓取全网评论,提前规避公关翻车
人工智能
Z-D-K13 分钟前
S-44的周末”旅行“-周日
人工智能·ai·aigc·交互·agi
Shota Kishi13 分钟前
在 Solana 上实现稳定币基础设施支付:SOL / USDC / EURC 付款与 EURC 结算的工程实践
人工智能·区块链
Z-D-K15 分钟前
S-44的周末”旅行“-周六
人工智能·机器学习·aigc·交互·agi
意图共鸣16 分钟前
能力对等器技术解析:意图共鸣科技《AI记忆链商业化白皮书3.0》——为什么每个开发者都需要一个属于自己的AI
人工智能·科技
星落zx17 分钟前
在CI/CD流水线里接入多模型自动Code Review,踩坑与方案分享
人工智能·ci/cd·代码复审
IT_陈寒17 分钟前
Vue的响应式让我原地裂开,你们也有这情况吗
前端·人工智能·后端
下班走回家20 分钟前
Qwen2.5 模型架构解读:国产大模型的进化
人工智能·架构
皮皮蟹虾饺20 分钟前
MiniMind 预训练详解:从零训练一个 64M 参数的语言模型
人工智能·语言模型·自然语言处理