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

人工智能深度学习——多层感知器(神经网络)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、多层感知器(Multi-Layer Perceptron)(神经网络)(MLP)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、多层感知器(Multi-Layer Perceptron)(神经网络)(MLP)实现非线性分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MLP用于多分类预测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、Keras介绍与实战准备

Keras是一个用Python编写的用于神经网络开发的应用接口,调用开接囗可以实现神经网络、卷积神经网络、循环神经网络等常用深度学习算法的开发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、基于MLP_test_data.csv数据,建立mlp模型,计算其在测试数据上的准确率

#加载数据
import pandas as pd
import numpy as np
data = pd.read_csv('MLP_test_data.csv')
data.head()

在这里插入图片描述

#赋值x,y
x = data.drop(['y'],axis=1)
y = data.loc[:,'y']
from matplotlib import pyplot as plt
fig1 = plt.figure()
plt.scatter(x.loc[:,'x1'][y==1],x.loc[:,'x2'][y==1])
plt.scatter(x.loc[:,'x1'][y==0],x.loc[:,'x2'][y==0])
plt.show()

在这里插入图片描述

#数据分离
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.33,random_state=10)
print(x_train.shape,x_test.shape,x.shape)

在这里插入图片描述

#创建一个Sequential顺序模型
from keras.models import Sequential
mlp = Sequential()#通过add()叠加各层网络
from keras.layers import Dense,Activation
mlp.add(Dense(units=20,activation='sigmoid',input_dim=2))
mlp.add(Dense(units=1,activation='sigmoid'))
#查看模型结构
mlp.summary()

在这里插入图片描述

#通过compile()配置模型求解的过程参数
mlp.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
#训练模型
mlp.fit(x_train,y_train,epochs=500)

在这里插入图片描述

#计算准确率
y_train_predict = mlp.predict(x_train)# 对于二分类问题(输出是0-1之间的概率)
y_train_predict = (y_train_predict > 0.5).astype("int32")  # 使用0.5作为阈值from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train,y_train_predict)y_test_predict = mlp.predict(x_test)# 对于二分类问题(输出是0-1之间的概率)
y_test_predict = (y_test_predict > 0.5).astype("int32")  # 使用0.5作为阈值
accuracy_test = accuracy_score(y_test,y_test_predict)
print(accuracy_train,accuracy_test)

在这里插入图片描述

print(type(y_train_predict))
y_train_predict_form = pd.Series(i[0] for i in y_train_predict)
print(type(y_train_predict_form),y_train_predict_form)

在这里插入图片描述

#可视化模型预测结果
xx,yy = np.meshgrid(np.arange(0,10,0.05),np.arange(0,10,0.05))
x_range = np.c_[xx.ravel(),yy.ravel()]
y_range_predict = mlp.predict(x_range)# 对于二分类问题(输出是0-1之间的概率)
y_range_predict = (y_range_predict > 0.5).astype("int32")  # 使用0.5作为阈值
print(type(y_range_predict))y_range_predict_form = pd.Series(i[0] for i in y_range_predict)
print(type(y_range_predict_form),y_range_predict_form)

在这里插入图片描述

fig2 = plt.figure()passed_predict = plt.scatter(x_range[:,0][y_range_predict_form==1],x_range[:,1][y_range_predict_form==1])
failed_predict = plt.scatter(x_range[:,0][y_range_predict_form==0],x_range[:,1][y_range_predict_form==0])passed = plt.scatter(x.loc[:,'x1'][y==1],x.loc[:,'x2'][y==1])
failed = plt.scatter(x.loc[:,'x1'][y==0],x.loc[:,'x2'][y==0])plt.title('prediction result')
plt.xlabel('x1')
plt.ylabel('x2')
plt.legend((passed_predict,failed_predict,passed,failed),('passed_predict','failed_predict','passed','failed'))plt.show()

在这里插入图片描述

五、MLP实现图像多分类,使用mnist数据集(在keras里)

#加载数据
from keras.datasets import mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data()

在这里插入图片描述

print(type(x_train),x_train.shape)

在这里插入图片描述

#可视化部分数据
img1 = x_train[0]from matplotlib import pyplot as plt
fig1 = plt.figure(figsize=(1,1))
plt.imshow(img1)
plt.title(y_train[0])
plt.show()

在这里插入图片描述

img1.shape

在这里插入图片描述

feature_size = img1.shape[0]*img1.shape[1]
x_train_format = x_train.reshape(x_train.shape[0],feature_size)
print(x_train_format.shape,x_train_format)x_test_format = x_test.reshape(x_test.shape[0],feature_size)

在这里插入图片描述

#归一化处理
x_train_normal = x_train_format/255
x_test_normal = x_test_format/255# print(x_train_normal[0])
#转换输出结果
from keras.utils import to_categorical
y_train_format = to_categorical(y_train)
y_test_format = to_categorical(y_test)print(y_train[0],y_train_format[0])

在这里插入图片描述

#建立模型
from keras.models import Sequential
from keras.layers import Input,Dense,Activation
mlp = Sequential([Input(shape=(feature_size,), name='input_layer'),Dense(392, activation='sigmoid', name='hidden1'),Dense(392, activation='sigmoid', name='hidden2'),Dense(10, activation='softmax', name='output')
])mlp.summary()

在这里插入图片描述

#配置模型
mlp.compile(loss='categorical_crossentropy',optimizer='adam')
#模型训练
mlp.fit(x_train_format,y_train_format,epochs=10)

在这里插入图片描述

#计算训练集准确率 
# 对于多分类问题(输出是概率分布)
probabilities = mlp.predict(x_train_normal)
y_train_predict = np.argmax(probabilities, axis=1)  # 取概率最大的类别
print(y_train_predict)

在这里插入图片描述

from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train,y_train_predict)
print(accuracy_train)

在这里插入图片描述

#计算测试集准确率
probabilities = mlp.predict(x_test_normal)
y_test_predict = np.argmax(probabilities, axis=1)  # 取概率最大的类别
print(y_test_predict)accuracy_test = accuracy_score(y_test,y_test_predict)
print(accuracy_test)

在这里插入图片描述

#随机选取测试集图片进行验证
img2 = x_test[80]
fig2 = plt.figure(figsize=(1,1))
plt.imshow(img2)
plt.title(y_test_predict[80])
plt.show()

在这里插入图片描述


文章转载自:

http://srJVPQvj.tmtrL.cn
http://X9pd0RnP.tmtrL.cn
http://ZWha0Le6.tmtrL.cn
http://fK8aRqDa.tmtrL.cn
http://dZ4GC3qM.tmtrL.cn
http://Ylubfzxs.tmtrL.cn
http://3OzSNRIl.tmtrL.cn
http://WxF2ufCo.tmtrL.cn
http://RcGRePeG.tmtrL.cn
http://Kmk15jAX.tmtrL.cn
http://PZQ96oPG.tmtrL.cn
http://4hw5Jpjr.tmtrL.cn
http://EOde7QSg.tmtrL.cn
http://cRH7ZIjk.tmtrL.cn
http://XGgSzOao.tmtrL.cn
http://3N0SUo36.tmtrL.cn
http://6qjE2hCN.tmtrL.cn
http://BeTUGOgt.tmtrL.cn
http://RItZDcKW.tmtrL.cn
http://abXOvnTs.tmtrL.cn
http://hj2bKDJj.tmtrL.cn
http://O2eIorXo.tmtrL.cn
http://9lUW04kX.tmtrL.cn
http://CXDBmeMz.tmtrL.cn
http://fGdLVanU.tmtrL.cn
http://FvLOzabe.tmtrL.cn
http://0cSWWuIm.tmtrL.cn
http://DpDButlE.tmtrL.cn
http://heAURylV.tmtrL.cn
http://ckimXilG.tmtrL.cn
http://www.dtcms.com/a/378107.html

相关文章:

  • 【RelayMQ】基于 Java 实现轻量级消息队列(七)
  • 从任意Git服务迁移仓库
  • OpenCV:图像透视变换
  • 小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
  • 前端查询条件是“0”几的时候查不到
  • openCV高阶操作之金字塔操作与直方图分析
  • 班级互动小程序(Python)
  • MongoDB面试集锦
  • 【JavaSE四天速通|第二篇】面向对象高级篇
  • 详细介绍一下 ​JSF(JavaServer Faces)
  • SpringCloud微服务网关Gateway
  • 跟做springboot尚品甄选项目(二)
  • 基于Mysql+SpringBoot+vue框架-大创管理系统源码
  • fastapi文档
  • vim指令
  • 【源码剖析】4-生产者-KafkaProducer分析
  • 事务方案选型全景图:金融与电商场景的实战差异与落地指南
  • 基于LSTM与3秒级Tick数据的金融时间序列预测实现
  • 第3节-使用表格数据-主键
  • 【C++练习】14.C++统计字符串中字母、数字、空格和其他字符的个数
  • ES6笔记5
  • 协议_https协议
  • 深入 Linux 文件系统:从数据存储到万物皆文件
  • 第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(1 、求十位数字)
  • CSS 属性概述
  • Ascend310B重构驱动run包
  • 碎片化采购是座金矿:数字化正重构电子元器件分销的价值链
  • 如何配置capacitor 打包的ios app固定竖屏展示?
  • 解锁Roo Code的强大功能:深入理解上下文提及(Context Mentions)
  • BilldDesk:基于Vue3+WebRTC+Nodejs+Electron的开源远程桌面控制