开源大礼包在文末~

第一章:项目背景及数据集分析

第二章:神经网络输入/输出数据集制作

第三章: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更加详细的描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐