开源大礼包在文末~
第一章:项目背景及数据集分析****
第二章:神经网络输入/输出数据集制作****
第三章:N-Inception-LSTM新型网络****
流程回顾及资源整理
1、获取原始数据集
数据集原始资源在第一章已经贴出,此处再次贴出:
原始数据集链接 (需要科学上网)
另附百度网盘链接(从上面那个链接下载了上传百度网盘的):
链接:https://pan.baidu.com/s/1hhT0YyXXrz4u0u_yFxJ9Mg?pwd=kmf2
提取码:kmf2
2、数据分析及预处理
代码在第一、第二章中已完整贴出,无保留,跟着做即可获得数据清洗后的数据集。此处有偿贴出数据清洗后的数据集:
航空大数据:由ADS-B报文系统预测飞机坐标(飞行轨迹)配套资源-数据集文档类资源-CSDN文库
3、 使用清洗后的数据制作训练集、验证集、测试集
制作过程的代码在第二章下半段已完整贴出,强调几个点:
1、数据集宽度是15这个不用变
2、高度64可以改为自己需要的高度,高度越大,连续时间越长,不同“高度”会影响后续LSTM的性能,理论上,连续时间越长,LSTM性能越好,至于有没有性能瓶颈,可以探索下~
3、贴出的代码示例,适用于制作训练集和验证集,测试集需要按照注释修改代码,现将修改后的制作测试集代码贴出:
[n,m]=size(x_train_norm);
height=64;%连续时间点采样步长,根据需求可变
width=15;%单一时间点输入特征个数
index_3d=1;
i=1;
while i <= n%第一次遍历,确定根据当前矩阵x_train_norm能制作出多少个二维样本
if i+height-1 > n
break;
end
%保证采样窗里只有单个航班的信息
if x_train_norm(i,1) == x_train_norm(i+height-1,1)
index_3d=index_3d+1;
i = i+1;
continue;
end
%若采样窗里不是单个航班,则将窗口跳跃至下一个航班起始位置
for t = 1:height-1
if x_train_norm(i,1) ~= x_train_norm(i+t,1)
i=i+t;
break;
end
end
end
fprintf('total %d \n',index_3d-1);
%提前开辟空间,加快后续运算速度
x_train=zeros(index_3d-1,height,width);
yla_train=zeros(index_3d-1,height);
ylong_train=zeros(index_3d-1,height);
%(index_3d-1)是能够制作的样本数,生成一个1~(index_3d-1)的整数随机序列,用于实现shuffle操作。
% ps:这段代码是灵魂~~~~
randIndex = randperm(index_3d-1);
randIndex=randIndex.';
index_3d=1;
i=1;
%%%%%%%%%%%%%%%%%%%%%
% 在制作测试集时打开注释
count=0;
count_all_test=0;
count_single_test=[];
%%%%%%%%%%%%%%%%%%%%%
while i <= n%第二次遍历,制作训练集
if(~mod(i,1000))
fprintf('已完成 %d 行转换!\n',i);
end
if i+height-1 > n
%%%%%% 在制作测试集时打开注释 %%%%%
count=i-n-1;
count_single_test=[count_single_test count];
count_all_test=count_all_test+1;
count=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
break;
end
if x_train_norm(i,1) == x_train_norm(i+height-1,1)
index=index_3d;%获取一个随机索引(灵魂~~~~)
% 若是在制作测试集,测试集不需要shuffle,测试集打乱后会增加后续维度复原难度
% 在制作测试集时直接按顺序将index作为索引即可,无需使用随机索引
% 即,制作测试集时,改为index=index_3d;
% 最终得到训练集输入x_train,和训练集输出yla_train、ylong_train
x_train(index,:,:)=x_train_norm(i:i+height-1,2:2+width-1);
yla_train(index,:)=y_train_norm(i:i+height-1,1);
ylong_train(index,:)=y_train_norm(i:i+height-1,2);
index_3d=index_3d+1;
i = i+1;
%%%%%% 在制作测试集时打开注释 %%%%%
count=count+1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
continue;
end
for t = 1:height-1
if x_train_norm(i,1) ~= x_train_norm(i+t,1)
i=i+t;
%%%%%% 在制作测试集时打开注释 %%%%%
if count==0
count=-t;
end
count_single_test=[count_single_test count];
count_all_test=count_all_test+1;
count=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
break;
end
end
end
4、按照第二章要求,测试集制作好后需要保存count_all_test和count_single_test,详见第二章
4、 构建神经网络
神经网络是第三章的部分,由于当时写文章的时候,项目正在进行中,因此只贴出了神经网络结构部分的代码,没有给出能够直接运行的代码。
现项目结束,在本文文末有偿提供能够直接运行的神经网络代码。
(但其实如果你有些基础的话,完全能够按网络结构构建完整网络,有能力的不建议浪费钱购买)
5、维度还原
因为数据集经过了连续时间采样,所以模型训练好后,预测结果的格式也是乱的,所以需要按照第二章将测试集输出维度还原。还原后可以根据经纬度在matlab上作图。
ADS-B项目大礼包(80GB):
有偿开源,理论上能够按照CSDN上的步骤全部实现,能不买就不买,别浪费钱~
购买链接:KAMIFAKA
内容:
1、第二章中数据清洗后的数据集(xy_norm.zip)
2、已经制作好的多个训练集、验证集、测试集
3、能直接运行的神经网络代码(前提是按照第三章配置好python环境,版本不对可能会运行出错)
4、网络已经跑过一遍,能够直接进行预测(测试集已经准备好)
5、SCI论文、硕士毕业论文,这两篇论文中有着比CSDN更加详细的描述
版权归原作者 cyc头发还挺多的 所有, 如有侵权,请联系我们删除。