AI人工智能机器学习之神经网络

news/2025/2/27 5:19:57

1、概要

  本篇学习AI人工智能机器学习神经网络,以MLPClassifier和MLPRegressor为例,从代码层面讲述最常用的神经网络模型MLP。

2、神经网络 - 简介

在 Scikit-learn 中,神经网络是通过 sklearn.neural_network 模块提供的。最常用的神经网络模型是多层感知器(MLP,Multi-layer Perceptron),它可以用于分类和回归任务。

一些基本的概念

  • 多层感知器(MLP):一种前馈神经网络,由输入层、隐藏层和输出层组成。每一层的节点与下一层的节点是全连接的。
  • 激活函数:每个神经元通常会有一个激活函数,如 ReLU、Sigmoid 和 Tanh,用于引入非线性。
  • 损失函数:在训练过程中用来评估模型性能的函数,MLP 允许使用不同的损失函数,具体取决于任务(如分类或回归)。
  • 优化算法:用于更新网络权重的算法,最常用的是随机梯度下降(SGD)和 Adam。

本篇,以两个示例讲述神经网络MLP的使用方法:

  • 示例1:MLPClassifier对数据集进行分类
  • 示例2:MLPRegressor对数据进行回归

3、神经网络

3.1、安装依赖

python安装机器学习库: pip install scikit-learn

3.2、示例1: MLPClassifier对数据集进行分类
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 生成模拟数据集
X, y = make_classification(n_samples=100, n_features=3, n_informative=2, n_redundant=0, n_classes=2, random_state=42)

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


def test_MLPClassifier():
    # 创建神经网络分类器实例
    # hidden_layer_sizes参数,一个元组,定义隐藏层的结构,例如 (100, 50) 表示有两个隐藏层,第一层100神经元,第二层 50 个神经元。
    # max_iter参数,最大迭代次数
    # random_state:随机种子,使结果可重复
    model = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=1000, random_state=42)

    # 训练模型
    model.fit(X_train, y_train)

    # 进行预测
    y_pred = model.predict(X_test)

    # 计算准确率
    accuracy = accuracy_score(y_test, y_pred)
    print(f"准确率为: {accuracy:.2f}")
    # 计算混淆矩阵
    print(confusion_matrix(y_test, y_pred))
    # 报告
    print(classification_report(y_test, y_pred))

test_MLPClassifier()

运行上述代码的输出:

准确率为: 0.93
[[10  1]
 [ 1 18]]
              precision    recall  f1-score   support

           0       0.91      0.91      0.91        11
           1       0.95      0.95      0.95        19

    accuracy                           0.93        30
   macro avg       0.93      0.93      0.93        30
weighted avg       0.93      0.93      0.93        30
3.3、示例2:MLPRegressor对数据进行回归
from sklearn.neural_network import MLPRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

# 创建回归数据集
X, y = make_regression(n_samples=100, n_features=1, noise=0.1, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

def test_MLPRegressor():
    # 创建和训练 MLPRegressor
    mlp_regressor = MLPRegressor(hidden_layer_sizes=(10,), max_iter=1000, random_state=42)
    mlp_regressor.fit(X_train, y_train)
    
    # 进行预测
    y_pred = mlp_regressor.predict(X_test)
    
    # 打印预测结果
    print("Predicted values:", y_pred)
    print("True values:", y_test)  

test_MLPRegressor()

运行上述代码的输出:

Predicted values: [-15.9535171   11.18083111   6.66419755  -6.93420128  -4.88154814
  -5.62929653  -7.89092833 -19.22598705   6.72784808   7.47032208
   8.14723448   2.80206811 -15.14571795  -8.72301651 -14.61559911
  -8.06564202   7.77080054   1.30566751   6.16147072   3.04358961]
True values: [-55.37503843  61.96236579  34.0206566  -16.26246864  -9.75232562
 -12.0363855  -19.53933098 -73.53859117  34.32170107  38.9917296
  42.89105035  14.96006767 -50.87199832 -22.1085758  -48.12392116
 -19.9786311   40.84203409  10.11000622  30.8780412   15.82045024]

4、 总结

本篇以MLPClassifier和MLPRegressor为例,从代码层面讲述最常用的神经网络模型MLP。虽然sklearn提供了接口来构建和训练神经网络模型,但是对于复杂的复杂的神经网络模型,推荐使用 TensorFlow 或 PyTorch 等库。


http://www.niftyadmin.cn/n/5869488.html

相关文章

用PySpark和PyTorch实现跨境支付Hive数据仓库的反洗钱数据分析

一、数据仓库表结构 假设我们有两个主要表: transactions (交易表)和 customers (客户表)。 transactions 表 CREATE TABLE transactions (transaction_id STRING,customer_id STRING,counterparty_id STRING,trans…

使用前端 html css 和js 开发一个AI智能平台官网模板-前端静态页面项目

最近 AI 人工智能这么火,那必须针对AI 做一个 AI方面的 官方静态网站练手。让自己的前端技术更上一层楼,哈哈。 随着人工智能技术的不断发展,越来越多的AI应用开始渗透到各行各业,为不同领域的用户提供智能化解决方案。本网站致力…

C语言中的内存函数使用与模拟实现

目录 一、内存函数的使用 1、memcpy()函数 2、memmove()函数 3、memcpy()函数 4、memset()函数: 二、内存函数的模拟实现 1、模拟实现memcpy()函数 2、模拟实现memmove()函数 一、内存函数的使用 1、memcpy()函数 memcpy()函数可以指定字节数,把…

av_find_input_format 和 AVInputFormat 的关系

1. av_find_input_format 和 AVInputFormat 的关系 av_find_input_format 是 FFmpeg 中的一个函数,用于根据输入格式的名称(如 "mp4"、"wav"、"avfoundation" 等)查找对应的输入格式结构体 AVInputFormat。 …

Python学习第十七天之PyTorch保姆级安装

PyTorch安装与部署 一、准备工作二、pytorch介绍三、CPU版本pytorch安装1. 创建虚拟环境2. 删除虚拟环境1. 通过环境名称删除2. 通过环境路径删除 3. 配置镜像源4. 安装pytorch1. 首先激活环境变量2. 进入pytorch官网,找到安装指令 5. 验证pytorch是否安装成功 四、…

PyCharm社区版如何运行Django工程?

PyCharm 社区版虽然不像专业版那样提供对 Django 的直接支持,但仍然可以通过一些手动配置来运行 Django 工程。以下是详细的步骤: 步骤 1:安装 Django 确保你的环境中已经安装了 Django。如果没有安装,可以通过以下命令安装&…

NLP09-朴素贝叶斯问句分类(3/3)

首先有个问句分类类: class QuestionClassify: 以下均为该类中的属性。 def __init__(self):self.train_x Noneself.train_y Noneself.tfidf_vec Noneself.train_vec Noneself.model Noneself.question_category_dict None__init__ 是 Python 中的一个特殊方…

C++ ⾼性能内存池

目录 项⽬介绍 小知识点补充 定位new 英语单词: 什么是内存池 1.池化技术 2.内存池 3.内存池主要解决的问题 3.1 效率问题 3.2 碎片化 3.2.1 外碎片 4.了解一下malloc 先设计⼀个定⻓的内存池 New的实现 Delete的实现 性能测试 脱离malloc直接在…