程序员学长 | 快速学会一个算法,ANN

本文来源公众号“程序员学长”,仅用于学术分享,侵权删,干货满满。

原文链接:快速学会一个算法,ANN

今天给大家分享一个强大的算法模型,ANN。

人工神经网络 (ANN) 是一种深度学习方法,源自人类大脑生物神经网络的概念。它由大量相互连接的人工神经元(也称为节点或单元)组成,每个神经元接收输入,进行简单处理后生成输出,并将结果传递给下一层的神经元。

人工神经网络架构

ANN 的基本构成包括输入层、隐藏层(不止一层)和输出层。典型的「前馈网络」以单向方式处理信息,从输入到输出。由于层数众多,有时也被称为 MLP(多层感知器)。

人工神经网络的类型
  • 前馈神经网络 (FNN)

    这些是简单的网络,信息以单向流动,例如从输入到输出。它们用于识别数据中的模式或进行预测等任务,使其成为模式识别的理想选择。

  • 卷积神经网络 (CNN)

    卷积神经网络是一种专门用于处理网格状数据(如图像)的深度学习模型。CNN在图像识别、图像分类、目标检测等领域表现尤为出色。

  • 循环神经网络 (RNN)

    循环神经网络是一种适合处理序列数据的神经网络模型。RNN在自然语言处理、时间序列预测、语音识别等领域表现突出。其主要特点是能够利用循环结构来记住和处理序列中的上下文信息。

  • 长短期记忆网络 (LSTM)

    长短期记忆网络是一种特殊的循环神经网络(RNN)架构,旨在解决传统 RNN 在处理长序列时的梯度消失和梯度爆炸问题。LSTM通过引入门控机制,能够更有效地捕捉长时间的依赖关系。

  • 生成对抗网络 (GAN)

    生成对抗网络是一种由两个神经网络组成的深度学习模型,分别称为生成器(Generator)和判别器(Discriminator)。这两个网络通过相互对抗的方式共同训练,以生成逼真的数据样本。GAN 用于创建新内容、增强图像,甚至生成深度伪造。

人工神经网络的应用

由于其独特的特性,ANN 具有广泛的应用。

ANN 的一些重要应用包括.

  1. 图像处理和计算机视觉

    • 图像分类和识别:用于自动标注图像内容,如人脸识别、物体检测等。

    • 图像生成和修复:生成对抗网络(GAN)在生成逼真图像、图像超分辨率和图像修复中应用广泛。

  2. 自然语言处理

    • 语言翻译:通过深度学习模型实现自动语言翻译,如谷歌翻译。

    • 情感分析:分析文本的情感倾向,用于市场分析和客户反馈。

    • 语音识别:将语音转换为文本,用于语音助手、语音输入等。

  3. 时间序列预测

    • 金融市场预测:预测股票价格、外汇汇率等金融数据的未来趋势。

    • 需求预测:预测商品需求量,用于库存管理和供应链优化。

    • 天气预报:基于历史气象数据进行未来天气的预测。

案例分享

为了理解 ANN,我们将使用举世闻名的泰坦尼克号生存预测。

你可以在此处找到数据集

https://www.kaggle.com/competitions/titanic/data

该分类器将帮助我们根据各种特征预测哪些乘客在灾难中幸存下来。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from keras.models import Sequential
from keras.layers import Dense

# 加载数据
data = pd.read_csv('train.csv')

# 数据预处理
data['Age'].fillna(data['Age'].mean(), inplace=True)
data['Embarked'].fillna(data['Embarked'].mode()[0], inplace=True)
data = pd.get_dummies(data, columns=['Sex', 'Embarked'], drop_first=True)
data.drop(columns=['Name', 'Ticket', 'Cabin'], inplace=True)

# 定义特征和标签
X = data.drop(columns=['Survived'])
y = data['Survived']

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 标准化特征
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 构建ANN模型
model = Sequential()
model.add(Dense(32, input_dim=X_train.shape[1], activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
training=model.fit(X_train, y_train, epochs=50, batch_size=10, validation_split=0.2)

接下了,我们看一下在训练过程中的损失变化。

plt.plot(training.history['loss'])
plt.plot(training.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()

结果:

代码如下:

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {accuracy:.2f}')

# 预测新数据
predictions = model.predict(X_test)
predictions = (predictions > 0.5).astype(int)
print(predictions[:10])

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值