sklearn 神经网络

2023-11-15

sklearn 神经网络

[url]https://blog.csdn.net/luanpeng825485697/article/details/79064657[/url](sklearn——神经网络)

多层感知器的优点:
可以学习得到非线性模型。
使用partial_fit 可以学习得到实时模型(在线学习)。


scikit-learn0.18上对于Neural Network算法有三个 neural_network.BernoulliRBM ,neural_network.MLPClassifier,neural_network.MLPRgression


多层感知器(MLP)的缺点:
具有隐藏层的 MLP 具有非凸的损失函数,它有不止一个的局部最小值。 因此不同的随机权 - 重初始化会导致不同的验证集准确率。
MLP 需要调试一些超参数,例如隐藏层神经元的数量、层数和迭代轮数。
MLP 对特征归一化很敏感.


神经网络分类(神经网络用于分类)
MLPClassifier 类实现了通过 Backpropagation 进行训练的多层感知器(MLP)算法。
目前, MLPClassifier 只支持交叉熵损失函数,通过运行 predict_proba 方法进行概率估计。
MLP 算法使用的是反向传播的方式。 更准确地说,它使用了通过反向传播计算得到的梯度和某种形式的梯度下降来进行训练。 对于分类来说,它最小化交叉熵损失函数,为每个样本 x 给出一个向量形式的概率估计 P(y|x)


神经网络回归(多层线性回归)

MLPRegressor 类多层感知器(MLP)的实现,在使用反向传播进行训练时的输出层没有使用激活函数,也可以看作是使用恒等函数(identity function)作为激活函数。 因此,它使用平方误差作为损失函数,输出是一组连续值。

MLPRegressor 还支持多输出回归,其中一个样本可以有多个目标值。


[url]https://blog.csdn.net/Gamer_gyt/article/details/51255448[/url](自己实现神经网络算法NeuralNetwork)


神经网络线性回归
#
from sklearn.naive_bayes import GaussianNB
import numpy as np
import matplotlib.pyplot as plt

# # =============神经网络用于分类=============
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler

# # =============神经网络用于回归=============

import numpy as np
from sklearn.neural_network import MLPRegressor # 多层线性回归
from sklearn.preprocessing import StandardScaler

data = [
[1, 1, 3], [1, 2, 5], [1, 3, 7],
[2, 2, 6],
[2, 3, 8], [4, 4, 12], [4, 1, 6],
]

dataMat = np.array(data)
X = dataMat[:, 0:2]
y = dataMat[:, 2]
scaler = StandardScaler() # 标准化转换
scaler.fit(X) # 训练标准化对象
X = scaler.transform(X) # 转换数据集

# solver='lbfgs', MLP的求解方法:L-BFGS 在小数据上表现较好,Adam 较为鲁棒,SGD在参数调整较优时会有最佳表现(分类效果与迭代次数);SGD标识随机梯度下降。
# alpha:L2的参数:MLP是可以支持正则化的,默认为L2,具体参数需要调整
# hidden_layer_sizes=(5, 2) hidden层2层,第一层5个神经元,第二层2个神经元),2层隐藏层,也就有3层神经网络
# clf = MLPRegressor(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1,max_iter=2000)
clf = MLPRegressor(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
print('预测结果:', clf.predict([[1, 3]])) # 预测某个输入对象
print('预测结果:', clf.predict([[2, 3]])) # 预测某个输入对象

cengindex = 0
for wi in clf.coefs_:
cengindex += 1 # 表示底第几层神经网络。
print('第%d层网络层:' % cengindex)
print('权重矩阵维度:', wi.shape)
print('系数矩阵:\n', wi)



神经网络分类

#
from sklearn.naive_bayes import GaussianNB
import numpy as np
import matplotlib.pyplot as plt

# # =============神经网络用于分类=============
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler

data = [
[-0.017612, 14.053064, 0], [-1.395634, 4.662541, 1], [-0.752157, 6.53862, 0], [-1.322371, 7.152853, 0],
[0.423363, 11.054677, 0],
[0.406704, 7.067335, 1], [0.667394, 12.741452, 0], [-2.46015, 6.866805, 1], [0.569411, 9.548755, 0],
[-0.026632, 10.427743, 0],
[0.850433, 6.920334, 1], [1.347183, 13.1755, 0], [1.176813, 3.16702, 1], [-1.781871, 9.097953, 0],
[-0.566606, 5.749003, 1],
[0.931635, 1.589505, 1], [-0.024205, 6.151823, 1], [-0.036453, 2.690988, 1], [-0.196949, 0.444165, 1],
[1.014459, 5.754399, 1],
[1.985298, 3.230619, 1], [-1.693453, -0.55754, 1], [-0.576525, 11.778922, 0], [-0.346811, -1.67873, 1],
[-2.124484, 2.672471, 1],
[1.217916, 9.597015, 0], [-0.733928, 9.098687, 0], [1.416614, 9.619232, 0], [1.38861, 9.341997, 0],
[0.317029, 14.739025, 0]
]

dataMat = np.array(data)
X = dataMat[:, 0:2] # 取前两个值作为特征值
y = dataMat[:, 2] # 最后一个为标签

# 神经网络对数据尺度敏感,所以最好在训练前标准化,或者归一化,或者缩放到[-1,1]
scaler = StandardScaler() # 标准化转换,去均值和方差归一化
scaler.fit(X) # 训练标准化对象
X = scaler.transform(X) # 转换数据集

# solver='lbfgs', MLP的求解方法:L-BFGS 在小数据上表现较好,Adam 较为鲁棒,SGD在参数调整较优时会有最佳表现(分类效果与迭代次数);SGD标识随机梯度下降。
# alpha:L2的参数:MLP是可以支持正则化的,默认为L2,具体参数需要调整
# hidden_layer_sizes=(5, 2) hidden层2层,第一层5个神经元,第二层2个神经元),2层隐藏层,也就有3层神经网络

clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 3),
random_state=1)
# 神经网络输入为2,第一隐藏层神经元个数为5,第二隐藏层神经元个数为3,输出结果为2分类。


clf.fit(X, y)
print('每层网络层系数矩阵维度:\n', [coef.shape for coef in clf.coefs_][0.317029, 14.739025])
print('预测结果:', y_pred)
y_pred_pro = clf.predict_proba([[0.317029, 14.739025]])
print('预测结果概率:\n', y_pred_pro)

cengindex = 0
for wi in clf.coefs_:
cengindex += 1 # 表示底第几层神经网络。
print('第%d层网络层:' % cengindex)
print('权重矩阵维度:', wi.shape)
print('系数矩阵:\n', wi)

# 绘制分割区域
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 # 寻找每个维度的范围
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 # 寻找每个维度的范围
xx1, xx2 = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01)) # 在特征范围以0.01位步长预测每一个点的输出结果
Z = clf.predict(np.c_[xx1.ravel(), xx2.ravel()]) # 先形成待测样本的形式,在通过模型进行预测。

Z = Z.reshape(xx1.shape) # 将输出结果转换为和网格的矩阵形式,以便绘图
# 绘制区域网格图
plt.pcolormesh(xx1, xx2, Z, cmap=plt.cm.Paired)#plt.pcolormesh()会根据y_predict的结果自动在cmap里选择颜色
# 绘制样本点
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn 神经网络 的相关文章

随机推荐

  • js 限制输入框不能为空_javascript如何验证不能为空?

    JavaScript中可以使用replace g 方法验证是否为空 replace g 可以将文本框开始与结尾的空格去除 然后使用 号判断是否为空 使用正则方法验证不能为空 正则表达式 replace g 整体为如果以一个或多个空格开始 替
  • VMwareWorkstationPro16的下载与安装,以及vm账号注册的问题

    VMwareWorkstationPro16的下载与安装 以及vm账号注册的问题 查看虚拟化支持是否开启 vm的安装 vm账号注册的常见问题 VM 16的安装步骤 查看虚拟化支持是否开启 可以从任务管理器中的性能去查看CPU是否开启虚拟化支
  • UNIX环境编程——信号量与互斥量对比

    本期主题 信号量与互斥量的对比 发现CSDN一篇文章的大小有限 所以新开了一篇讲这一部分 前面的内容在 UNIX环境编程 线程详解 往期地址 UNIX环境编程 文件IO UNIX环境编程 标准IO UNIX环境编程 进程环境与进程控制 文章
  • ubuntu RPM should not be used directly install RPM packages, use Alien instead!

    ubuntu RPM should not be used directly install RPM packages use Alien instead 所以我们最好下载deb版本的安装包 安装 参考文章
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • A* 算法

    简单描述一下A 原理 两个集合 OpenList 可到达的格子 CloseList 已到达的格子 一个公式 F G H 解释一下 F G H是格子的3个属性 G 从起点走到当前格子的成本 也就是已经花费了多少步 H 在不考虑障碍的情况下 从
  • Spring Cloud(八):使用Spring Cloud Bus来实现配置动态更新

    使用Spring Cloud Config我们能实现服务配置的集中化管理 在服务启动时从Config Server获取需要的配置属性 但如果在服务运行过程中 我们需要将某个配置属性进行修改 比如将验证码的失效时间从五分钟调整为十分钟 如何将
  • 使用VS Code进行Vue模板编程的设置方法

    Vue js是一种流行的JavaScript框架 用于构建前端应用程序 在VS Code中进行Vue模板编程时 可以通过一些扩展和配置来提高开发效率 本文将介绍如何设置VS Code以优化Vue模板编程体验 安装Vue扩展 首先 我们需要安
  • vscode 统计代码行数的插件

    1 安装插件 VS Code Counter 2 安装好之后 shift ctrl p 调出命令行 选择合适的命令直接统计 一般点击 Count lines in directory 然后确认要统计的目录即可 3 会以统计时间生成统计文件夹
  • VS Code + Markdown Preview Enhanced 出现 mermaid预览流程图看不见线条问题的解决方案

    VS Code mermaid预览流程图看不见线条问题的解决方案 使用mermaid插件可以在Markdown文档中插入漂亮的流程图 但是VS code安装上Markdown Preview Enhanced插件之后 看到的却是这样的效果
  • Java之集合的排序方式(Comparable和Comparator的基本使用以及区别)

    文章目录 一 Comparable接口 1 代码示例 2 运行结果 3 案例分析 二 Comparator接口 1 代码示例 2 运行结果 3 案例分析 三 Comparable和Comparator对比 1 接口位置 2 实现方式 3 排
  • SpringBoot + Mybatis 多模块( module )项目搭建教程

    作者 枫本非凡 www cnblogs com orzlin p 9717399 html 一 前言 最近公司项目准备开始重构 框架选定为SpringBoot Mybatis 本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过
  • 8k Byte , 8bit的ROM存储器,其地址线和数据线各需要多少根?

    总共容量为810248bits 2 16bits 因此其地址线需要16根 因为是8bit的ROM存储器 因此数据线需要8根
  • 使用ggplot2包在R语言中抑制数据轴上的科学计数法

    使用ggplot2包在R语言中抑制数据轴上的科学计数法 在数据可视化领域 ggplot2是R语言中最流行和强大的包之一 它提供了丰富的功能和灵活性 使我们能够创建出美观 清晰的图形来展示数据 其中一个常见的问题是 当我们使用ggplot2绘
  • 【自然语言处理】隐马尔可夫模型【Ⅵ】精度问题

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成六篇博客 自然语言处理 隐马尔可夫模型 马尔可夫模型 自然语言处理 隐马尔可夫模型 隐马尔科夫模型概述 自然语言处理 隐马尔可夫模型 估计问题 自然语言处理 隐马尔
  • 非递减排列和非递增排列的定义

    递增排列 1 2 3 4 5 6 7 8 递减排列 8 7 6 5 4 3 2 1 非递减排列 1 2 3 4 5 6 6 7 8 8 非递增排列 9 8 8 7 6 5 2 2 1
  • 小白学python-数据清洗

    数据清洗 赔率 公路堵车模型的概念及应用 主成分分析PCA 新的的特征组合 车辆数据描述 one hot编码会使特征值大量增加 维度变高视情况而定 Logistic回归 AUC 曲线下的面积 求取素数以及赔率的代码 import opera
  • web service概念、架构及相关知识

    一 WebService的定义 WebService有好几种定义 W3C组织对其定义 WebService是一个软件系统 为了支持跨网络的机器间互操作交互而设计 WebService通常被定义为一组模块化的API 我们可以通过网络进行调用
  • 太原理工大学19年Java试题复习笔计

    19年Java复习题 1 为使一个名为Example的public类成功编译 需至少满足以下哪个条件 2 0分 A Example类中必须定义一个正确的main函数 B Example类中必须定义在 Example java源文件中 C E
  • sklearn 神经网络

    sklearn 神经网络 url https blog csdn net luanpeng825485697 article details 79064657 url sklearn 神经网络 多层感知器的优点 可以学习得到非线性模型 使用