首页 > 其他分享 >week13_MLP_多层感知机

week13_MLP_多层感知机

时间:2023-05-22 22:24:11浏览次数:37  
标签:week13 score pred 感知机 MLP train test import model

Multi-Layer Perceptron 多层感知机

生物神经网络

圣地亚哥·拉蒙-卡哈尔(西班牙语:Santiago Ramón y Cajal,1852年5月1日-1934年10月17日),西班牙病理学家、组织学家,神经学家,1906年诺贝尔生理学医学奖得主。

image

人类对大脑的研究由来已久,在十九世纪末到二十世纪初,在大脑神经系统的研究方面获得了突破性的进展。1906年,西班牙神经组织学家、被誉为现代神经科学之父的圣地亚哥·拉蒙-卡哈尔(Santiago Ramón y Cajal)因对人脑神经系统的突出贡献获得当年的诺贝尔生理学或医学奖。他明确阐述了神经元(也叫做神经细胞)的独立性和神经元之间通过树枝状触角相互连接的关系,奠定了生物神经网络(Biological Neural Networks)的基础,也为人工神经网络(Artificial Neural Network,也常简称为神经网络)提供了可参考的重要依据。

他对于大脑的微观结构研究是开创性的,被许多人认为是现代神经科学之父。他绘图技能出众,他的关于脑细胞的几百个插图至今用于教学。
生平
编辑
拉蒙-卡哈尔是医师和解剖学讲师斯托·拉蒙(Justo Ramón)和安东尼·卡哈尔(Antonia Cajal)的儿子。孩提时期由于他不良行为和反专制的态度,被调到许多不同的学校。他的早熟和叛逆的一个极端的例子是在他11岁的时候,用自制的大炮摧毁邻居家大门,他也因此受到监禁。他是一个狂热的画家、艺术家和体操运动员。他曾作为鞋匠和理发师,他好斗的态度颇为知名。
1906年,瑞典卡罗琳斯卡医学院将诺贝尔医学和生理学奖授予在神经组织学领域做出重要贡献的高尔基和卡哈尔。不过,两人学术上的分歧并未因此弥合。在颁奖典礼现场,获奖者要发表演说以阐述自己在该领域所做的工作。高尔基首先发言,他以脑部受损后功能的恢复以及脑组织强大一致的信息整合能力为依据再次申明了自己对网状理论的支持。而卡哈尔则说:“的确,如果神经中枢是由运动神经……和感觉神经相互融合并连续组成的网络,那么事情会变得非常方便、经济和易于分析。不幸的是,大自然似乎无视了我们智力上对方便和一致的需求,而往往乐于表现出复杂性和多样性。”

image


人工神经网络

1943年,神经学家沃伦•麦卡洛克(Warren McCulloch)和年轻的数学家沃尔特·皮茨(Walter Pitts)提出了一个人工神经元的模型

——麦卡洛克-皮茨神经元模型(McCulloch-Pitts Neuron Model)

简称MP模型

image

image

image

image

image

image

1986年,大卫·鲁姆哈特(David Rumelhart)和詹姆斯·麦克莱兰(James McClelland)在(Parallel Distributed Processing: Explorations in the Microstructure of Cognition)一文中,重新提出了反向传播学习算法并给出了完整的数学推导过程。同一时期,辛顿、罗纳德·威廉姆斯、大卫·帕克和杨立昆等人也分别做出了关于BP算法的独立研究和贡献。

BP算法正式出现的意义在于,对于如何更高效地训练神经网络,让神经网络更有序地进行学习,提供了有效的、可遵循的理论和方法,这在以后神经网络尤其是深度学习领域是一个里程碑式的事件,至今BP方法仍然是训练多层神经网络的最主要、最有效的方法。

image

image

image

image

image

image

激活函数

image

MLP代码实现

# 代码汇总
# 1.读取数据
import pandas as pd
df = pd.read_excel('stock_customer_churn.xlsx')

# 2.划分特征变量和目标变量
X = df.drop(columns='是否流失') 
y = df['是否流失']

# 3.划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,  random_state=1 )

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform( X_train )
X_test = scaler.transform( X_test )

# 4.模型搭建
from sklearn.neural_network import MLPClassifier
## hidden_layer_sizes的值为[100],这意味着模型中只有一个隐藏层,而隐藏层的节点数为100.
## 如果我们给hidden_layer_sizes定义为[10,10],就意味着模型中有两个隐藏层,每层有10个节点。
model = MLPClassifier( activation = 'relu', hidden_layer_sizes=(500,500) ) 
model.fit( X_train , y_train )

# 5.模型使用1 - 预测数据结果
y_pred = model.predict(X_test)
# print(y_pred[0:100])  # 打印预测内容的前100个看看

# 查看全部的预测准确度
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
print(score)  # 打印整体的预测准确度

# 6.模型使用2 - 预测概率
y_pred_proba = model.predict_proba(X_test)  
# print(y_pred_proba[0:5])  # 打印前5个客户的分类概率

from sklearn.metrics import classification_report
report = classification_report( y_pred, y_test )
print(report)
0.8102224325603408
              precision    recall  f1-score   support

           0       0.92      0.84      0.88      1726
           1       0.49      0.66      0.56       387

    accuracy                           0.81      2113
   macro avg       0.70      0.75      0.72      2113
weighted avg       0.84      0.81      0.82      2113
model.score(X_test, y_test)
0.8102224325603408

逻辑回归和神经网络的比较

逻辑回归的准确率0.7983

# 代码汇总
# 1.读取数据
import pandas as pd
df = pd.read_excel('stock_customer_churn.xlsx')

# 2.划分特征变量和目标变量
X = df.drop(columns='是否流失') 
y = df['是否流失']

# 3.划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

# 4.模型搭建
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)

# 5.模型使用1 - 预测数据结果
y_pred = model.predict(X_test)
# print(y_pred[0:100])  # 打印预测内容的前100个看看

# 查看全部的预测准确度
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
print(score)  # 打印整体的预测准确度

# 6.模型使用2 - 预测概率
y_pred_proba = model.predict_proba(X_test)  
# print(y_pred_proba[0:5])  # 打印前5个客户的分类概率

from sklearn.metrics import classification_report
report = classification_report( y_pred, y_test )
print(report)
0.7983909133932797
              precision    recall  f1-score   support

           0       0.91      0.83      0.87      1733
           1       0.46      0.63      0.53       380

    accuracy                           0.80      2113
   macro avg       0.68      0.73      0.70      2113
weighted avg       0.83      0.80      0.81      2113

标签:week13,score,pred,感知机,MLP,train,test,import,model
From: https://www.cnblogs.com/dogfaraway/p/17421873.html

相关文章

  • 考研周记-week13
    5.15~5.21记录一下本周的考研进度情况英语本周继续使用软件复习单词,因为结束了一轮,每天的单词量有所下降,所以添加了一本单词书,用来巩固复习。数学数学方面,本周继续线性代数的学习和高数的基础巩固,预计6月初结束线性代数,6月中旬结束高数的基础巩固,并且完成660的高数部分专业......
  • 感知机(Perceptrons)—人工神经元
    1957年科学家FrankRosenblatt开发了感知机这一人工神经元。感知机由两层神经元组成,输入层接收样本的特征,输出层产生样本的二进制类别。虽然现在大家主要是应用sigmoid神经元,仍然有必要对感知机的原理进行理解以明白sigmoid由来。工作原理假设我们有m个样本,每个样本有n个特征......
  • 动手学深度学习(三) 多层感知机
    多层感知机多层感知机的基本知识使用多层感知机图像分类的从零开始的实现使用pytorch的简洁实现多层感知机的基本知识深度学习主要关注多层模型。在这里,我们将以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层下图展示了一个多层感知机的神经网络图,它含有......
  • 统计学习方法笔记-感知机学习方法
    感知机(Perceptron)1.感知机模型1.1感知机定义​ 输入空间$\mathcal{X}\subseteq\mathbb{R}^n$,输出空间\(\mathcal{Y}\)={+1,-1};​ 输入\(x\in\mathcal{X}\)表示的实例的特征向量,对应于输入空间的点,输出\(y\in\mathcal{Y}\)表示的实例的类别;由输入空间到输出空间的......
  • htmlParser源码分析之1---类图
         需要做一个垂直搜索引擎,比较了nekohtml和htmlparser的功能,尽管nekohtml在容错性、性能等方面的口碑好像比htmlparser好(htmlunit也用的是nekohtml),但感觉nekohtml的测试用例和文档都比htmlparser都少,而且htmlparser基本上能够满足垂直搜索引擎页面处理分析的需......
  • htmlparser关键包结构,类说明
    1、org.htmlparser    定义了htmlparser的一些基础类。其中最为重要的是Parser类。   Parser是htmlparser的最核心的类,其构造函数提供了如下:Parser.createParser(Stringhtml,Stringcharset)、Parser()、Parser(Lexerlexer,ParserFeedbackfb)、Parser(UR......
  • MLP多层感知机时间序列预测(Matlab) 所有程序经过验证,保证可以运行
    MLP多层感知机时间序列预测(Matlab)所有程序经过验证,保证可以运行。1.data为数据集,一维时间序列数据。2.MainMLPTS.m为主程序文件,其他为函数文件,无需运行。3.命令窗口输出R2和MAE。ID:9319682924924115......
  • 【Oracle】使用xmlagg(xmlparse(content()).getclobval()拼接信息
    使用xmlagg(xmlparse(content()).getclobval()拼接信息简单来说格式如下xmlagg(xmlparse(content(内容||分割符)).getclobval()内容就是使用显示的数据部分,分隔符不同效果不同,分隔符可以使用chr()函数无分隔符xmlagg(xmlparse(content('这是一个字段:'||v.supercode||'、......
  • 肉身布莱特-感知机python实现
    一、代码:做线性拟合importnumpyasnpfrommatplotlibimportpyplotasplt#很简单的一个体积增大和毒气量的关系拟合virulence=np.random.rand(100)volume=np.random.rand(100)virulence.sort()volume.sort()plt.scatter(volume,virulence)w=0b=0alp......
  • UNeXt:基于 MLP 的快速医学图像分割网络
    UNeXt是约翰霍普金斯大学在2022年发布的论文。它在早期阶段使用卷积,在潜在空间阶段使用MLP。通过一个标记化的MLP块来标记和投影卷积特征,并使用MLP对表示进行建模。对输入通道进行移位,可以专注于学习局部依赖性。UNeXt完整文章:https://avoid.overfit.cn/post/addeb0eacf6......