本文旨在为数据科学家提供人工神经网络(ANN)的深入研究支持,以便他们能够开发专业用途的应用。将从感知器模型开始,介绍输入神经元、函数和激活函数,这些是计算输出神经元的关键。对于数据科学家来说,掌握梯度下降的概念至关重要。
在本节中,将探讨人工神经网络的理论主题,包括感知器、求和函数、激活函数、多层感知器、误差计算、梯度下降和反向传播。
感知器是理解单层ANN的模型。感知器设备通过证明输入变量的证据来做出决策。
有输入到神经元,并且有相关的权重,然后有求和函数和激活函数,这是一个阶梯函数。
激活函数负责处理ANN的输出,在本文中,使用阶梯函数,如果求和函数的结果大于0,则输出值为1,否则输出值为0。
多层网络具有多个隐藏层,这是深度学习的一个特征。结合激活函数,使用sigmoid函数。
梯度下降模型是数据科学家必须掌握的数学模型,数据输入从3D曲线的顶部开始,那里的误差很大,挑战找到权重,可以沿着梯度下降,直到到达3D曲线,那里的误差很小。
# 导入必要的库
import pandas as pd
import seaborn as sns
import tensorflow as tf
# 加载数据集
dataset = pd.read_csv('personagens.csv')
print(dataset.shape)
print(dataset.head())
# 数据可视化
sns.countplot(x='classe', data=dataset)
sns.heatmap(dataset.corr(), annot=True)
# 准备数据
X = dataset.iloc[:, 0:6].values
y = dataset.iloc[:, 6].values
y = (y == 'Homer')
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_treinamento, X_teste, y_treinamento, y_teste = train_test_split(X, y, test_size=0.2)
# 构建神经网络模型
rede_neural = tf.keras.models.Sequential()
rede_neural.add(tf.keras.layers.Dense(units=4, activation='relu', input_shape=(6,)))
rede_neural.add(tf.keras.layers.Dense(units=4, activation='relu'))
rede_neural.add(tf.keras.layers.Dense(units=4, activation='relu'))
rede_neural.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
# 编译模型
rede_neural.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
# 训练模型
historico = rede_neural.fit(X_treinamento, y_treinamento, epochs=50, validation_split=0.1)