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

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

相关推荐
Kai HVZ7 分钟前
《深度学习》——bert框架
人工智能·深度学习·bert
紫雾凌寒33 分钟前
自然语言处理|金融舆情解析:智能事件抽取与风险预警之道
人工智能·深度学习·自然语言处理·金融·事件抽取·金融舆情·风险预警
机器之心1 小时前
在GSM8K上比GRPO快8倍!厦大提出CPPO,让强化学习快如闪电
人工智能
果冻人工智能1 小时前
我们的灵魂需要“工作量证明”, 论在人工智能时代的欲望与安逸
人工智能
机器之心1 小时前
自动学会工具解题,RL扩展催化奥数能力激增17%
人工智能
Shockang1 小时前
机器学习的一百个概念(6)最小最大缩放
人工智能·机器学习
枉费红笺1 小时前
目标检测的训练策略
人工智能·目标检测·计算机视觉
进取星辰1 小时前
PyTorch 深度学习实战(30):模型压缩与量化部署
人工智能·pytorch·深度学习
新智元1 小时前
吉卜力太火,奥特曼求饶!GPT-4o 免费生图登王座,设计师直呼天塌了
人工智能·openai