多层感知器(Multi-Layer Perceptron)(人工神经网络)
多层感知器模型框架
MLP用于非线性分类预测
在不增加高次项数据的情况下,如何通过MLP实现非线性分类预测




MLP模型框架
MLP实现多分类预测
实战准备
Keras
Keras是一个用Python编写的用于神经网络开发的应用接口,调用开接口可以实现神经网络、卷积神经网络、循环神经网络等常用深度学习算法的开发
特点:
- 集成了深度学习中各类成熟的算法,容易安装和使用,样例丰富,教程和文档也非常详细
- 能够以TensorFlow,或者Theano作为后端运行
Keras or Tensorflow
Tensorflow是一个采用数据流图,用于数值计算的开源软件库,可自动计算模型相关的微分导数:非常适合用于神经网络模型的求解。
Keras可看作为tensorflow封装后的一个接口(Keras作为前端,TensorFlow作为后端。
Keras为用户提供了一个易于交互的外壳,方便进行深度学习的快速开发
Keras建立MLP模型
# 建立一个Sequential顺序模型
from keras.models import Sequential
model = Sequential()
# 通过.add()叠加各层网络
from keras.layers import Dense
model.add(Dense(units=3,activation='sigmoid',input_dim=3))
model.add(Dense(units=1,activation='sigmoid'))
# 通过.compile()配置模型求解过程参数
model.compile(loss='categorical_crossentropy',optimizer='sgd'])
# 训练模型
model.fit(x_train,y_train,epochs=5)
实战-建立MLP实现非线性二分类
任务:基于data.csv数据,建立mlp模型,计算其在测试数据上的准确率,可视化模型预测结果︰
- 进行数据分离:
test_size=0.33,random_state=10
- 模型结构:一层隐藏层,有20个神经元
建立MLP模型,查看模型结构
from keras.models import Sequential
from keras.layers import Dense,Activation
mlp = Sequential()
mlp.add(Dense(20,input_dim=2,activation='sigmoid'))
mlp.add(Dense(1,activation='sigmoid'))
mlp.summary()
配置模型参数
mlp.compile(optimizer='adam',loss='binary_crossentropy')
模型训练
mlp.fit(X_train,y_train,epochs=3000)
结果预测
y_test_predict = mlp.predict_classes(X_test)
把预测结果转换为可用于索引的Series类型
y_range_predict = pd.Series([i[0] for i in y_range_predict])
实战:MLP实现图像多分类
任务:基于mnist数据集,建立mlp模型,实现0-9数字的十分类:
- 实现mnist数据载入,可视化图形数字
- 完成数据预处理:图像数据维度转换与归一化、输出结果格式转换
- 计算模型在预测数据集的准确率
- 模型结构:两层隐藏层,每层有392个神经元
mnist数据集介绍
机器学习领域