python-sklearn实现神经网络(数据量小的情况)

2023-05-16

以下内容笔记出自‘跟着迪哥学python数据分析与机器学习实战’,外加个人整理添加,仅供个人复习使用。


神经网络(neural_network)模块重要的有两个类,MLPClassifier(分类)和MLPRegressor(回归)。多层感知器(MLP)是一种监督学习算法,前馈神经网络模型。两类都适用参数alpha作为正则化(L2正则化)系数。

skalern中的神经网络,在数据规模较大时,不适用!

MLPClassifier的训练使用BP算法,使用交叉熵损失函数(Cross-Entropy loss function)

1. MLPClassifier类,多层感知机分类

1.1 花类别预测

from sklearn import neural_network
from sklearn.datasets import load_iris
import numpy as np
import sys
import warnings
warnings.filterwarnings('ignore')
iris=load_iris()

mlp=neural_network.MLPClassifier(hidden_layer_sizes=(10), #隐藏层
                                 #(10,20)指的是隐藏层层数+每层单元数
                                activation='relu',  #激活函数
                                solver='adam',
                                alpha=0.0001,  #正则化项系数
                                batch_size='auto',
                                learning_rate='constant',  #学习率
                                learning_rate_init=0.001,
                                power_t=0.5,
                                max_iter=200,  #迭代次数
                                tol=1e-4)
mlp.fit(iris.data,iris.target)
print(mlp.predict([[1,2,3,4]]))  #预测结果
print('类别数:\n',mlp.n_outputs_)  #输出类别数
print('所有类别:\n',mlp.classes_)    #所有类别
print('损失函数损失值:\n',mlp.loss_)       #损失函数的损失值
print('偏移量:\n',mlp.intercepts_)   #偏移量

print('权重:\n',mlp.coefs_)
print('迭代轮数:\n',mlp.n_iter_)
print('网络层次:\n',mlp.n_layers_)  #只有一层隐藏层时 =3
print('输出层的激活函数名称:\n',mlp.out_activation_)

在这里插入图片描述

1.2 参数说明

- hidden_layer_size : 元组,同时指定隐藏层层数+每层单元数
- activation : 隐藏层激活函数,可选{'identity','logistic','tanh','relu'},对应f(x)=x / 1/(1+exp(-x)) / tanh(x) / max(0,x)
- slver=adam 参数的优化算法,{'lbfgs', 'sgd', 'adam'},分别对应{拟牛顿法,随机梯度下降,基于随机梯度下降的自适应}的具体实现算法
- alpha=0.0001:L2正则化参数
- batch_size='auto':对于随机优化器来说是可选的,批大小,设为auto时为min(200,n_SAMPLES)
- learning_rate="constant":参数更新时的学习率,只在solver='sgd'时有效,可选为{'constant', 'invscaling', 'adaptive'},分别对应{常数即=初始学习率,逐渐降低,自适应}
- learning_rate_init=0.001:初始学习率,只在solver='sgd''adam'起作用
- power_t=0.5:影响learning_rate=" invscaling "时的学习率降低(有个计算公式effective_learning_rate = learning_rate_init / pow(t, power_t),t表示时间步)
- max_iter=200:最大迭代轮数
- tol=1e-4:损失值容忍阈值,小于该值时停止训练

神经网络根据在一轮神经网络的训练过程中所用到的训练样本数量不同,可分为:

  • 标准BP算法:每次网络训练值针对单个训练样本,一次训练就输入一个训练样本,更新一次网络参数;
  • 累计BP算法:每次网格训练只针对所有训练样本,一次将所有训练样本输入,更新一次网格输入;

参考链接:https://www.jianshu.com/p/72c427ec9c80

MLPClassifier通过应用Softmax作为输出函数来支持多分类softmax回归本质上是将原先常见的二元分类人物神经网络的输出层采用的sigmoid激活函数换成softmax回归。做指数化,再归一化。

若有k个类别,当某个训练样本为第i类时,其目标值应该是[0,0,…,1,…,0],只在向量的第i个位置标为1,其他位置都为0.

#用训练集预测数据(练习)
predictions=mlp.predict(iris.data)

from sklearn.metrics import classification_report,confusion_matrix
print(confusion_matrix(iris.target,predictions))

[[50 0 0]
[ 0 13 37]
[ 0 1 49]]

print(classification_report(iris.target,predictions))

在这里插入图片描述

2. MLPRegressor做连续值预测

本来输出的就是连续值,用来做分类要加上softmax层,这里只是去掉该层

from sklearn import neural_network
import matplotlib.pyplot as plt
import numpy as np
import sys
mlp=neural_network.MLPRegressor(hidden_layer_sizes=(10),
                               activation='relu',
                               solver='adam',
                               alpha=0.0001,
                               batch_size='auto',
                               learning_rate='constant',
                               learning_rate_init=0.001,
                               power_t=0.5,max_iter=200,tol=1e-4)
x=np.arange(-3,3,0.1)
y=np.exp(x)
mlp.fit(np.asarray(x).reshape([-1,1]),y)

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-sklearn实现神经网络(数据量小的情况) 的相关文章

  • oracle数据库控制语言—DCL

    文章目录 1 授予系统权限1 1 授予创建其他对象权限 2 撤销系统权限2 1 示例 3 oracle 中的角色3 1 什么时角色3 2 创建角色并且授予权限给角色3 2 1 创建角色3 2 1 1 示例 3 2 2 授予权限给一个角色3
  • 软件测试 | Django插入数据

    gt gt gt from datetime import datetime gt gt gt el 61 Event id 61 2 name 61 39 红米 Pro 发布会 39 xff0c limit 61 2000 status
  • oracle数据库的导入与导出

    文章目录 1 oracle数据库导入与导出需要注意2 导出数据格式介绍3 传统方式exp 导出 xff09 和 xff08 imp xff09 导入3 1 命令执行方式3 2 命令格式3 3 导出数据3 3 1示例 3 4 导入数据3 4
  • oarcle — ANY和ALL、行列转换、递归查询

    文章目录 1 在多行子查询中用ANY运算符1 1 示例 2 在多行子查询中用ALL运算符2 1 示例 3 行列转换3 1 建表3 2 插数3 3 列传行3 3 1 union all 实现列传行3 3 2 oracle 自带函数 3 4 行
  • 嵌入式学习规划

    一 STM32的单片机 1 学习stm32开发板 1 1 流水灯 学习内容 xff1a xff1a 工程建立 xff0c 库的使用 1 2 AD采集 学习内容 xff1a xff1a 学习AD 1 3 串口 学习内容 xff1a xff1a
  • UAV Ubuntu18.04 PX4环境搭建

    Ubuntu18 04 PX4环境搭建 设备 VMware WorkStation16 0pro Ubuntu18 04 虚拟机 参考链接 XTDrone团队的 xff1a 仿真平台基础配置 xff08 PX4 1 11版 xff09 ht
  • 无人机遥控器使用说明

    遥控器使用说明 21 06 09 激光雷达避障使用时候设置的通道 开机前检查 所有拨码开关拨到最上方 SWA SWB两个开关 暂时没用 主要使用SWC和SWD 开机 同时按下两个开机键开机 模式说明 现在使用的模式主要设置了四个 红框 SW
  • Jetson Tx2配置PX4飞控实机开发环境

    Jetson Tx2使用 设备 Jetson Tx2板卡 xff08 原装或者底板加核心板 xff09 带Ubuntu系统电脑或者虚拟机Tx2原装数据线HDMI显示器鼠标键盘 刷机 参考链接 1 使用NVIDIA SDK Manager刷机
  • Jetson Nano刷系统教程

    Jetson Nano使用 设备 Jetson Nano板卡64G SD卡 xff08 最小16G xff09 读卡器HDMI显示器鼠标键盘 刷机 格式化SD卡 使用SD卡格式化工具进行格式化 下载镜像 进入英伟达下载中心 xff1a ht
  • 【Windows下搭建深度学习环境之TensorFlow篇】一气呵成,五步搞定TensorFlow的安装!TensorFlow的安装之路

    TensorFlow的安装之路 0 安装前须知1 安装Anaconda1 1 什么是虚拟环境 xff1f 1 2 安装Anaconda具体步骤1 3 添加环境变量 xff08 系统变量 xff09 1 4 修改Conda库和pip库的安装源
  • 关于putty出现access denied的问题解决方案

    关于putty出现access denied的问题解决方案 1 网上也说了很多 比较多一点的就是修改PermitRootLogin 在linux终端terminal执行下面命令 sudo gedit etc ssh sshd config
  • [四旋翼无人机PID仿真(一)

    64 四旋翼无人机串级PID仿真 四旋翼无人机的数学模型的建立 xff1a 在建立模型的过程中 xff0c 采用了欧拉角来进行数学模型的建立 首先进行无人机结构以及飞行原理的分析 xff0c 然后进行系统建模 xff0c 在建模的过程中 x
  • Django查询、删除、更新数据

    查询数据 查询无疑是数据库表中使用频率最高的操作 table object get 方法用于从数据库表中取得一条匹配的结果 xff0c 返回一个对象 xff0c 如果记录不存在的话 xff0c 那么它会报DoesNotExist类型错误 通
  • static 静态方法可以直接调用,不用创建对象

    static 静态方法可以直接调用 xff0c 不用创建对象
  • Java歌手评分系统

    有五个评委 xff0c 对一个歌手唱歌打分 xff0c 最终得分要求去掉最高分去掉最低分 xff0c 求平均分 注意要求的格式为 xff1a 输入第1个评委给分 97 1 输入第2个评委给分 89 2 输入第3个评委给分 88 6 输入第4
  • python3环境下使用cv_bridge

    环境 ubuntu18 04 ros melodic 由于ros自带的python版本是2 7 系统中的cv bridge是用python2编译的 xff0c 如果在python3环境中使用cv bridge xff0c 会报以下错误 xf
  • 运行VINS-MONO报的错

    刚刚安装完环境 xff0c 已经可以跑通Euroc数据集 xff0c 回忆一下值得记下来的注意事项 环境配置 我的电脑 xff1a Ubuntu18 04 ROS melodic Opencv3 4 3 首先 xff1a GitHub上的代
  • TX2安装realsense SDK和librealsense

    官网https github com IntelRealSense librealsense安装很简单 xff0c 一定要对应好SDK与ros包 realsense固件的版本 https github com IntelRealSense
  • VINS-Fusion轨迹评估

    代码轨迹输出修改 visualization cpp VINS Fusion master vins estimator src utility visualization cpp的150行左右 xff1a span class token
  • antd4中Form组件initialValues设置初始值无效,使用setFieldsValue动态赋值,getFieldsValus动态获取值

    首先说明initialValues这个属性 xff0c 这个属性antd官方给的是设置Form组件初始值 xff0c 但是有个问题如果值从后端请求那么initialValues可能会设置不上 xff0c 如果说用匿名组件的话 xff0c 修

随机推荐