当前位置: 首页 > news >正文

【无标题】神经网络算法初探

参考文献:

https://mp.weixin.qq.com/s/FCcenV1dyqMim1RKm2ccWQ?scene=1&click_id=104

https://www.deepseek.com/

代码:

import numpy as np  //导入 NumPy 库并将其命名为 np
import matplotlib.pyplot as plt //导入 Matplotlib 库的 pyplot 模块并将其命名为 plt
import seaborn as sns//导入 Seaborn 库并将其命名为 sns
from sklearn.neural_network import MLPClassifier//从 scikit-learn 库的 neural_network 模块中导入 MLPClassifier 类
from sklearn.model_selection import train_test_split//从 scikit-learn 库的 model_selection 模块中导入 train_test_split 函数
from sklearn.datasets import load_iris//从 scikit-learn 库的 datasets 模块中导入 load_iris 函数
from sklearn.preprocessing import StandardScaler//从 scikit-learn 库的 preprocessing 模块中导入 StandardScaler 类
from matplotlib.colors import ListedColormap//从 Matplotlib 库的 colors 模块中导入 ListedColormap 类

# 1. 加载和预处理数据
# 加载鸢尾花数据集
iris = load_iris() //加载鸢尾花数据集并将其存储在名为 iris 的变量中
# 为了便于可视化,我们只选取前两个特征:花萼长度和花萼宽度
X = iris.data[:, :2]
y = iris.target

# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 数据标准化(非常重要,有助于神经网络收敛)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 2. 训练神经网络模型
# MLPClassifier 是一个多层感知机分类器
# hidden_layer_sizes=(10, 5): 两个隐藏层,分别有10个和5个神经元
# max_iter=1000: 最大迭代次数,防止训练时间过长
# alpha=0.01: L2 正则化参数,防止过拟合
# random_state=1: 随机种子,确保结果可复现
# early_stopping=True: 提前停止训练,如果验证分数没有提高,则停止
mlp = MLPClassifier(hidden_layer_sizes=(10, 5), max_iter=1000, alpha=0.01,
                    solver='adam', verbose=False, random_state=1,
                    early_stopping=True)

# 训练模型
mlp.fit(X_train_scaled, y_train)

# 3. 评估模型
train_score = mlp.score(X_train_scaled, y_train)
test_score = mlp.score(X_test_scaled, y_test)
print(f"训练集准确率: {train_score:.2f}")
print(f"测试集准确率: {test_score:.2f}")

# 4. 绘制训练过程中的损失函数曲线
plt.figure(figsize=(10, 6))
plt.plot(mlp.loss_curve_)
plt.title("训练损失函数曲线", fontsize=16)
plt.xlabel("迭代次数", fontsize=12)
plt.ylabel("损失值", fontsize=12)
plt.grid(True)
plt.show()

# 5. 绘制决策边界图
def plot_decision_boundary(X, y, model, scaler):
    h = .02  # 网格步长
    x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
    y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))

    # 使用训练好的模型对网格点进行预测
    Z = model.predict(scaler.transform(np.c_[xx.ravel(), yy.ravel()]))
    Z = Z.reshape(xx.shape)

    # 绘制等高线和散点图
    plt.figure(figsize=(10, 6))
    cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
    cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])

    plt.pcolormesh(xx, yy, Z, cmap=cmap_light)

    # 绘制训练数据点
    sns.scatterplot(x=X[:, 0], y=X[:, 1], hue=y, palette=cmap_bold, s=80, alpha=0.8,
                    edgecolor='k', legend=False)

    plt.title("神经网络的决策边界图", fontsize=16)
    plt.xlabel("花萼长度 (cm)", fontsize=12)
    plt.ylabel("花萼宽度 (cm)", fontsize=12)
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.show()

# 调用函数绘制决策边界图
plot_decision_boundary(X, y, mlp, scaler)


文章转载自:

http://0hit77Bh.twwzk.cn
http://IEt8JJJs.twwzk.cn
http://ihCcXyIb.twwzk.cn
http://hU2i1pJr.twwzk.cn
http://gyA6ozmU.twwzk.cn
http://pGO3Lwr2.twwzk.cn
http://iM6zslls.twwzk.cn
http://wYFeAZAu.twwzk.cn
http://cjtisNkD.twwzk.cn
http://XWvsSVEI.twwzk.cn
http://UEGbHZ9i.twwzk.cn
http://QA5YUePG.twwzk.cn
http://jjTFBZZ8.twwzk.cn
http://msTCViSz.twwzk.cn
http://Au5oDe71.twwzk.cn
http://qi3xr72A.twwzk.cn
http://JHPmpPuI.twwzk.cn
http://RDzdjPFD.twwzk.cn
http://AK8ctGOa.twwzk.cn
http://OctYEcS3.twwzk.cn
http://BuYVLxFK.twwzk.cn
http://ZQVuMBmh.twwzk.cn
http://0OOvEJ5b.twwzk.cn
http://pUVlzKlA.twwzk.cn
http://zC89kvUQ.twwzk.cn
http://ZM1CH7xp.twwzk.cn
http://vO0ufqm4.twwzk.cn
http://GHrLrvN2.twwzk.cn
http://0k1MF91t.twwzk.cn
http://obGhG2GA.twwzk.cn
http://www.dtcms.com/a/383450.html

相关文章:

  • Genspark AI 浏览器
  • Linux内核IPsec接收机制剖析:XFRM框架与xfrm4_input.c的深度解读
  • Linux 系统下的流量控制工具之tc命令案例解析
  • 数据库造神计划第五天---增删改查(CRUD)(1)
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第九章知识点问答(10题)
  • AI表征了西方的有界,AI+体现了东方的无界
  • 前端基础 —— B / CSS基础
  • Qwen2.5-VL 实战:用 VLM 实现 “看图对话”,从目标检测到空间推理!【附源码】
  • vLLM - EngineCoreClient
  • MySQL专题Day(2)————存储引擎
  • 多文件编程与宏的使用
  • 第5节-连接表-Inner-Join
  • 【Csp - S】 图的知识
  • 【图文详解】MCP、A2A的核心技术特点以及架构模式
  • Java基础 9.13
  • Shell 正则表达式完全指南
  • 玩转ClaudeCode:用Database-MCP实现自然语言操作数据库
  • 【Android】答题系统Web服务器APP应用开发流程详解
  • Web服务器VS应用服务器:核心差异解析
  • 分享一个vue2的tinymce配置
  • spring bean一共有几种作用域
  • Redie详细入门教程2
  • Maven入门_简介、安装与配置
  • Vue组件化开发介绍
  • ​new species of flying reptile1 discovered in Scotland​
  • Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战
  • 闪电科创 SCI专业辅导
  • 【数据结构与算法】图 Floyd算法
  • 代码随想录算法训练营第十一天--二叉树2 || 226.翻转二叉树 / 101.对称二叉树 / 104.二叉树的最大深度 / 111.二叉树的最小深度
  • IDEA编译器设置代码注释模板