clc
clear
close all
rng(2)
[a,ax,ay] = xlsread('数据 .xlsx');
a(:,7:end) = [];
[idx,c,sumd ,d] = kmeans(a, 2);
pan2 = sum(idx==2);
pan1 = sum(idx==1);
num = [a idx];
y = zeros(size(a));
figure
for ii = 1:6
x = a(:,ii);
y(:,ii) = hampel(x,10);
subplot(6,1,ii)
plot(x,'k-')
hold on
plot(y(:,ii),'r-')
if ii == 1
title('异常值检测')
end
end
dx = a(:,1)-y(:,1);
[mx,my] = find(dx>20);
for ii = length(mx):-1:1
num(mx(ii),:) = [];
end
n = randperm(length(num));
m=12000;
input_train =num(n(1:m),1:6 )';%训练数据输出数
output_train = num(n(1:m),7)';%训练数据输入数据
input_test = num((12001:end),1:6)';%测试数据输出数据
output_test = num((12001:end),7)';%测试数据输入数据
[inputn,inputps]=mapminmax(input_train,-1,1);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train,-1,1);%训练数据的输出数据的归一化de
inputn_test=mapminmax('apply',input_test,inputps);
%% Define Network Architecture
% Define the network architecture.
numFeatures = 6;%输入层维度
numResponses = 1;%输出维度
% 200 hidden units
numHiddenUnits = 125;%第一层维度
% a fully connected layer of size 50 & a dropout layer with dropout probability 0.5
layers = [ ...
sequenceInputLayer(numFeatures)%输入层
lstmLayer(numHiddenUnits,'OutputMode','sequence')%第一层
fullyConnectedLayer(110)%链接层
dropoutLayer(0.1)%遗忘层
fullyConnectedLayer(numResponses)%链接层
regressionLayer];%回归层
% Specify the training options.
% Train for 60 epochs with mini-batches of size 20 using the solver 'adam'
maxEpochs = 60;%最大迭代次数
miniBatchSize =100;%最小批量
% the learning rate == 0.01
% set the gradient threshold to 1
% set 'Shuffle' to 'never'never
options = trainingOptions('adam', ... %解算器
'MaxEpochs',maxEpochs, ... %最大迭代次数
'MiniBatchSize',miniBatchSize, ... %最小批次
'InitialLearnRate',0.01, ... %初始学习率
'GradientThreshold',inf, ... %梯度阈值
'Shuffle','every-epoch', ... %打乱顺序
'Plots','training-progress',... %画图
'Verbose',0); %不输出训练过程
%% Train the Network
net = trainNetwork(inputn,outputn,layers,options);%开始训练
% save maynet.mat
%% Test the Network
y_pred = predict(net,inputn_test,'MiniBatchSize',miniBatchSize)';%测试仿真输出
[y_pred]=(mapminmax('reverse',y_pred',outputps));
% y_pred0 = predict(net,inputn,'MiniBatchSize',1)';%训练拟合值
% y_pred0=(mapminmax('reverse',y_pred0',outputps))';
y_pred=round(double(y_pred));
zhunquelv = sum(y_pred==output_test)/length(output_test)
error1 = y_pred-output_test;%误差
% zz=(mapminmax('reverse',zz,inputps));
figure%打开一个图像窗口
plot(output_test,'ro')%红色实线,点的形状为o
hold on
plot(y_pred,'b*')%黑色实线,点的形状为*
hold off%停止画图测试图')%Y轴名称
legend('实际值','预测输出')%标签
ylabel('类别')
set(gca,'fontsize',12)
set(gca,'YTick',1:2)
set(gca,'YTickLabel',{'运行正常','运行故障'})
figure
plot(error1,'k-*')
title('测试误差图')
R_2 = R_2(output_test,y_pred)
[MSE,RMSE,MBE,MAE ] =MSE_RMSE_MBE_MAE(output_test,y_pred);
result_table = table;
result_table.simd = y_pred';
result_table.trued = output_test';
writetable(result_table,'./结果2.csv')
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,用长短期神经网络LSTM进行异常值检测,数据是连续的时间序列数据,通过LSTM持续检测实现,用LSTM比一般神经网络更适合,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论
收起资源包目录
daima.rar (10个子文件)
MSE_RMSE_MBE_MAE.m 361B
2.jpg 18KB
main1.m 3KB
1.jpg 47KB
R_2.m 317B
数据 .xlsx 915KB
main1.asv 3KB
结果2.csv 1KB
3.jpg 24KB
90JJH(U[K7FH{0UGGE4]){3.png 148KB
共 10 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2510
- 资源: 618
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数据库管理工具:dbeaver-ce-23.3.0-macos-aarch64.dmg
- 数据库管理工具:dbeaver-ce-23.2.5-stable.x86-64.rpm
- 数据库管理工具:dbeaver-ce-23.2.5-macos-x86-64.dmg
- 数据库管理工具:dbeaver-ce-23.2.5-macos-aarch64.dmg
- Kettle上连接HDFS,同步虚拟机上MySQL数据到HDFS
- 数据库管理工具:dbeaver-ce-23.2.4-x86-64-setup.exe
- 数据库管理工具:dbeaver-ce-23.2.4-stable.x86-64.rpm
- 含小数的十进制转N进制源代码.rar
- 数据库管理工具:dbeaver-ce-23.2.4-macos-x86-64.dmg
- python的字符界面程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功