【故障诊断】基于KNN、SVM、RF、DT、ET多种算法实现制冷系统故障诊断附Matlab代码

简介: 【故障诊断】基于KNN、SVM、RF、DT、ET多种算法实现制冷系统故障诊断附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

制冷系统故障可由多种模型进行模拟诊断.为了提高其诊断性能,将包括K近邻模型(KNN),支持向量机(SVM),决策树模型(DT),随机森林模型(RF)及逻辑斯谛回归模型(LR)在内的5种成员诊断器,通过绝对多数投票方法集成为一个集成模型,并采用美国采暖,制冷与空调工程师学会(ASHRAE)故障数据对1台90冷吨的离心式冷水机组进行建模及验证,数据包含制冷系统的7类典型故障及一类正常运行.结果表明:集成模型在所选数据集上总体诊断正确率达到99.58%,较各成员诊断器(94.55%~99.05%)均有显著提升,对正常运行,局部故障及全局故障的诊断性能亦有改善.此外,对比分析了不同集成模型及成员诊断器的诊断性能,从中找到诊断正确率与时间成本最佳的集成模型(99.41%,1.34 s).可见,集成模型较单一模型性能更佳,在制冷系统故障诊断中具有更好的应用前景.

⛄ 部分代码

% Gaussian Mixture Model (10/12/2020)function GMM = mGaussianMixtureModel(feat,label,opts)% Defaultkfold = 10;tf    = 2;if isfield(opts,'kfold'), kfold = opts.kfold; endif isfield(opts,'ho'), ho = opts.ho; endif isfield(opts,'tf'), tf = opts.tf; end% Number of classnum_class = numel(unique(label)); % [Hold-out]if tf == 1  fold = cvpartition(label,'HoldOut',ho);  % Call train & test data  xtrain = feat(fold.training,:); ytrain = label(fold.training);  xtest  = feat(fold.test,:);     ytest2 = label(fold.test);  % Train model  My_Model = fitgmdist(xtrain,num_class,...    'Options',statset('MaxIter',1000),...    'Regularize',1e-5,...    'Start',ytrain);  % Test using cluster  pred2 = cluster(My_Model,xtest);   % Accuracy  Afold = sum(pred2 == ytest2) / length(ytest2);    % [Cross-validation] elseif tf == 2  fold   = cvpartition(label,'KFold',kfold);  Afold  = zeros(kfold,1);   pred2  = [];  ytest2 = [];   for i = 1:kfold    % Call train & test data    trainIdx = fold.training(i); testIdx = fold.test(i);    xtrain   = feat(trainIdx,:); ytrain  = label(trainIdx);    xtest    = feat(testIdx,:);  ytest   = label(testIdx);     % Train model    My_Model = fitgmdist(xtrain,num_class,...      'Options',statset('MaxIter',1000),...      'Regularize',1e-5,...      'Start',ytrain);    % Test using cluster    pred = cluster(My_Model,xtest);     % Accuracy    Afold(i) = sum(pred == ytest) / length(ytest);    % Store temporary    pred2  = [pred2(1:end); pred];    ytest2 = [ytest2(1:end); ytest];   end  % [Leave-one out]elseif tf == 3  fold     = cvpartition(label,'LeaveOut');  % Size of data  num_data = length(label);   Afold    = zeros(num_data,1);   pred2    = [];  ytest2   = [];   for i = 1:num_data    % Call train & test data    trainIdx = fold.training(i); testIdx = fold.test(i);    xtrain   = feat(trainIdx,:); ytrain  = label(trainIdx);    xtest    = feat(testIdx,:);  ytest   = label(testIdx);     % Train model    My_Model = fitgmdist(xtrain,num_class,...      'Options',statset('MaxIter',1000),...      'Regularize',1e-5,...      'Start',ytrain);    % Test using cluster    pred = cluster(My_Model,xtest);     % Accuracy    Afold(i) = sum(pred == ytest) / length(ytest);    % Store temporary    pred2  = [pred2(1:end); pred];    ytest2 = [ytest2(1:end); ytest];   endend% Confusion matrixconfmat = confusionmat(ytest2,pred2); % Overall accuracyacc = mean(Afold); % Store resultGMM.acc  = acc;GMM.con  = confmat;if tf == 1  fprintf('\n Accuracy (GMM-HO): %g %%',100 * acc);elseif tf == 2  fprintf('\n Accuracy (GMM-CV): %g %%',100 * acc);elseif tf == 3  fprintf('\n Accuracy (GMM-LOO): %g %%',100 * acc);endend

⛄ 运行结果

⛄ 参考文献

Katırcıoğlu F, Cingiz Z. Fault diagnosis for overcharge and undercharge conditions in refrigeration systems using infrared thermal images. Proceedings of the Institution of Mechanical Engineers, Part E: Journal of Process Mechanical Engineering. 2023;0(0). doi:10.1177/09544089221148065

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
12小时前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
12小时前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
12小时前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
12小时前
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
12小时前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
12小时前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
12小时前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
12小时前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
12小时前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
12小时前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)