当前位置:   article > 正文

Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据...

wisdm 数据集 处理异常数据 代码

全文链接:https://tecdat.cn/?p=36613

在本文中,我们旨在利用深度学习技术,特别是TensorFlow框架下的Keras库,对WISDM(无线传感器数据挖掘)数据集进行活动识别。点击文末“阅读原文”获取完整代码数据)。

相关视频

WISDM数据集包含了从用户身上佩戴的加速度传感器收集的三轴加速度数据,这些数据被用于识别用户的日常活动,如走路、跑步、跳跃等。通过对这些数据的分析,我们可以为健康监测、人机交互等领域提供有价值的见解。

d362d2162d409f2bc72bb72725c9437c.png

数据准备

首先,我们导入了必要的Python库,包括NumPy用于数值计算、TensorFlow用于深度学习建模、Pandas用于数据处理、Seaborn和Matplotlib用于数据可视化。为了确保实验的可重复性,我们设置了随机种子。

t64) df.dropna(axis=0, how='any', inplace=True)

65c9edb907683557746b726d8da91bc7.png

数据探索

在数据准备阶段之后,我们对数据集进行了初步的探索。通过Seaborn库的countplot函数,我们绘制了不同活动类型的频数分布图,以了解数据集中各种活动类型的分布情况。

sns.countplot(x = 'activity',

d4c7b442e5536bcf7991f45805116163.jpeg

通过此图,我们可以直观地看到数据集中各种活动类型的分布情况,为后续的模型训练和评估提供有价值的参考。

为了直观地了解数据集中用户活动记录的分布情况,我们绘制了用户ID的频数分布图。通过Seaborn库的countplot函数,我们观察到不同用户之间的活动记录数量存在差异。

order = df.user_id.value_counts().index); plt.title("Records per user");

5929cf77e85309d96f1e4e9bbece598d.jpeg

  1. for ax in axis:
  2. ax.legend(loc='lower left', bbox_to_anchor=(1.0, 0.5))

此外,为了更深入地了解用户活动数据的特征,我们定义了一个名为plot_activity的函数,用于绘制特定活动类型的三轴加速度数据图。通过这个函数,我们可以直观地比较不同活动类型在加速度数据上的差异。

plot_activity("Sitting", df);

7aa594e2740627f8aadb4e01a05cbeb3.png

6c587609093a004887f0cc0590773b4d.png


点击标题查阅往期内容

38bd34ee34a49a8f4d7260b8989e78a5.png

Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

9f408fa44bdf803fd278fc9c641add93.png

02

6162954593f76d86e1395f5a6bd44f07.png

03

545185e9a1bb418365a5d53babe25c4f.jpeg

04

5dc0c6614a59450156fb5125097a0d8a.png

数据分割与缩放

为了进行模型训练和验证,我们将数据集按照用户ID进行了分割,前30个用户的数据作为训练集,其余用户的数据作为测试集。接着,我们使用RobustScaler对数据进行缩放,以减少不同特征之间的量纲影响,提高模型的训练效果。

在数据预处理和可视化之后,我们将构建深度学习模型,并使用训练集进行模型训练。通过调整模型架构和参数设置,我们旨在提高活动识别的准确性和效率。此外,我们还将使用测试集对模型进行评估,以验证其泛化能力。

scaler = scaler.fit(df_train[scale_columns])
print(X_train.shape, y_train.shape)

2cb7b412b6ef080059eadf89ca541bb4.png

我们采用了一种基于双向长短期记忆(Bi-LSTM)的深度学习模型,通过预处理数据、构建模型、训练与评估等步骤,实现了对用户日常活动的准确分类。

在数据预处理阶段,我们设计了一个名为create_dataset的函数,用于从原始数据中提取时间序列样本及其对应的标签。该函数接受四个参数:输入数据X、标签数据y、时间步长time_steps和步长step。通过遍历输入数据,该函数以固定的步长截取时间序列样本,并使用scipy.stats.mode函数计算每个样本时间段内出现频率最高的活动标签作为该样本的标签。

在本研究中,我们设定时间步长TIME_STEPS为200,步长STEP为40。利用create_dataset函数,我们从训练集df_train中提取了训练数据X_train和对应的标签y_train,从测试集df_test中提取了测试数据X_test和对应的标签y_test

模型构建与训练

在模型构建阶段,我们采用了一个基于双向长短期记忆(Bi-LSTM)的深度学习模型。该模型包含以下组件:一个双向LSTM层,用于捕捉时间序列数据中的双向依赖关系;一个Dropout层,用于防止过拟合;两个全连接层(Dense层),其中第一个使用ReLU激活函数,第二个使用Softmax激活函数,用于输出多分类结果。

在模型训练阶段,我们首先使用One-Hot编码对标签数据进行处理,以便模型能够处理多分类任务。然后,我们将预处理后的训练数据X_train和标签y_train输入到模型中,并使用Adam优化器和分类交叉熵损失函数进行训练。我们设定了20个训练周期(epochs),每个周期内的批处理大小(batch size)为64,并使用10%的数据作为验证集进行模型性能的监控。

X_train, y_train, epochs=20, batch_size=64, validation_split=0.1,

426f2e55f220125ab91989400fcf8397.png

plt.plot(history.history['val_loss'], label='test') plt.legend();

de89d023cca793d01489d46a35da9a67.png

经过训练后,我们得到了一个能够准确识别用户活动的深度学习模型。通过查看训练过程中的损失函数值和准确率指标,我们可以发现模型在训练集和验证集上均取得了良好的性能。此外,我们还对测试集进行了评估,以验证模型的泛化能力。实验结果表明,该模型在用户活动识别任务中具有较高的准确性和稳定性。

模型评估与结果分析

在完成了模型的训练过程后,我们首先对模型进行了评估,以验证其在未见数据上的性能。通过使用Keras框架的evaluate方法,我们计算了模型在测试集X_test和对应标签y_test上的性能表现。测试损失值和准确率分别为0.3610.87,这显示了模型在测试集上具有良好的泛化能力。

evaluate(X_test,

6d45ef3bb8409e151c76418c6a04b637.png

为了更深入地了解模型的分类性能,我们进一步计算了模型的混淆矩阵。混淆矩阵是一种常用的评估分类模型性能的工具,它可以清晰地展示模型在各类别上的预测结果与实际结果的对比情况。首先,我们使用模型对测试集进行预测,得到预测结果y_pred

然后,我们定义了一个名为plot_cm的函数,用于绘制混淆矩阵的可视化图像。该函数接受真实标签y_true、预测标签y_pred和类别名称class_names作为输入,利用Seaborn库中的heatmap函数绘制混淆矩阵,并通过调整图表的细节使其更加易于理解。

最后,我们调用plot_cm函数,传入逆变换后的真实标签和预测标签,以及通过编码器enc获取的类别名称,绘制混淆矩阵的可视化图像。

plot_cm( enc.inverse_transform(y_test),

01009fe24be1e3df76e0a7e20fdead99.png 通过混淆矩阵的可视化图像,我们可以清晰地看到模型在各类别上的预测表现,包括正确分类的样本数和错误分类的样本数。这有助于我们进一步分析模型的性能瓶颈,并指导后续的模型优化工作。


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

a6ff007f982bd788affa6876c3670bb6.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据》。

点击标题查阅往期内容

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

2a9bb3c023b4b29b91279aeed0574b6f.jpeg

003ceff370e6fdc69e225a8055caa917.png

39340d0332e5d86246ee86ecf101a829.png

385024dbf871ecbfee69b52c447dcbe0.jpeg

a31e0f3925954fc3f789f497056d999d.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/803187
推荐阅读
相关标签
  

闽ICP备14008679号