赞
踩
相关视频
多层感知器模型(简称MLP)是标准的全连接神经网络模型。
它由节点层组成,其中每个节点连接到上一层的所有输出,每个节点的输出连接到下一层节点的所有输入。
通过一个或多个密集层创建MLP 。此模型适用于表格数据,即表格或电子表格中的数据,每个变量一列,每个变量一行。您可能需要使用MLP探索三个预测建模问题;它们是二进制分类,多分类和回归。
让我们针对每种情况在真实数据集上拟合模型。
我们将使用二进制(两类)分类数据集来演示用于二进制分类的MLP。
该数据集涉及预测结构是否在大气中或不给定雷达回波。
数据集将使用Pandas自动下载。
电离层数据集(csv)
电离层数据集描述(csv)
我们将使用LabelEncoder将字符串标签编码为整数值0和1。该模型将适合67%的数据,其余的33%将用于评估,请使用train_test_split()函数进行拆分。
最好将' relu '激活与' he_normal '权重初始化一起使用。在训练深度神经网络模型时,这种组合可以大大克服梯度消失的问题。
该模型预测1类的可能性,并使用S型激活函数。
下面列出了代码片段。
- # mlp二分类包
- from pandas import read_csv
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import LabelEncoder
- from tensorflow.keras import Sequential
- from tensorflow.keras.layers import Dense
- # 加载数据
- path = 'osph.csv'
- df = read_csv(path, header=None)
- # 分割输入和输出
- X, y = df.values[:, :-1], df.values[:, -1]
- # ensure all data are floating point values
- X = X.astype('float32')
- # 文本转换数字变量
- y = LabelEncoder().fit_transform(y)
- # 分割训练测试集
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
- print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
- # 定义输入变量维度
- n_features = X_train.shape[1]
- #定义模型
- model = Sequential()
- model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,)))
- model.add(Dense(8, activation='relu', kernel_initializer='he_normal'))
- model.add(Dense(1, activation='sigmoid'))
- # compile the model
- model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
- # 拟合模型
- model.fit(X_train, y_train, epochs=150, batch_size=32, verbose=0)
运行示例将首先报告数据集的形状,然后拟合模型并在测试数据集上对其进行评估。最后,对单行数据进行预测。
鉴于学习算法的随机性,您的具体结果会有所不同。尝试运行该示例几次。
在这种情况下,我们可以看到该模型实现了约94%的分类准确度,然后预测单行数据属于1类的概率为0.9。
- (235, 34) (116, 34) (235,) (116,)
- Test Accuracy: 0.940
- Predicted: 0.991
我们将使用鸢尾花多类分类数据集来演示用于多类分类的MLP。
该问题涉及在给定花的度量的情况下预测鸢尾花的种类。
数据集将使用Pandas自动下载,但您可以在此处了解更多信息。
鸢尾花数据集(csv)
鸢尾花数据集描述(csv)
鉴于它是一个多类分类,因此该模型在输出层中的每个类必须具有一个节点,并使用softmax激活函数。损失函数是' sparse_categorical_crossentropy ',它适用于整数编码的类标签(例如,一个类为0,下一类为1,等等)
下面列出了在鸢尾花数据集上拟合和评估MLP的代码片段。
- # 预测
- row = [5.1,3.5,1.4,0.2]
- yhat = model.predict([row])
- print('Predicted: %s (class=%d)' % (yhat, argmax(yhat)))
运行示例将首先报告数据集的形状,然后拟合模型并在测试数据集上对其进行评估。最后,对单行数据进行预测。
鉴于学习算法的随机性,您的具体结果会有所不同。尝试运行该示例几次。
在这种情况下,我们可以看到该模型实现了约98%的分类精度,然后预测了属于每个类别的一行数据的概率,尽管类别0的概率最高。
- (100, 4) (50, 4) (100,) (50,)
- Test Accuracy: 0.980
- Predicted: [[0.8680804 0.12356871 0.00835086]] (class=0)
我们将使用波士顿住房回归数据集来演示用于回归预测建模的MLP。
这个问题涉及根据房屋和邻里的属性来预测房屋价值。
数据集将使用Pandas自动下载,但您可以在此处了解更多信息。
波士顿住房数据集(csv)。
波士顿房屋数据集说明(csv)。
这是一个回归问题,涉及预测单个数值。因此,输出层具有单个节点,并使用默认或线性激活函数(无激活函数)。拟合模型时,均方误差(mse)损失最小。
- # 预测
- row = [0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98]
- yhat = model.predict([row])
- print('Predicted: %.3f'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。