✨ 长期致力于模式辨识、特征选择、云理论、集成学习、故障诊断系统研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
✅如需沟通交流,点击《获取方式》
(1)多域特征初筛与冗余剔除:
针对转子振动信号提取的时域、频域及时频域特征通常包含大量冗余信息,设计一种基于互信息与改进拉普拉斯得分的两级初筛策略。首先计算每个特征与故障类别之间的互信息值,保留互信息大于零点一五的特征,剔除与类别相关性极低的特征,这一步将原始一百二十八个特征压缩至七十九个。然后对剩余特征计算改进拉普拉斯得分,该得分在传统拉普拉斯得分基础上加入特征间的余弦相似度惩罚项,使得高相似度特征中得分较低者被剔除。设定阈值为零点七,保留得分低于阈值的特征,最终得到四十二个初筛特征。与传统过滤器式方法相比,本策略将特征冗余度从百分之六十二降至百分之三十一,且未丢失关键故障信息。采用凯斯西储大学轴承数据集和自建转子实验台数据进行验证,初筛后的特征集在后续分类任务中准确率比原始特征集提高百分之三点七,同时训练时间缩短百分之五十二。实验还发现,初筛后的特征对轻微不平衡故障与早期磨损故障的区分能力显著增强,混淆矩阵显示误判率从百分之十三点六降至百分之八点一。","import numpy as np
from sklearn.feature_selection import mutual_info_classif
from sklearn.metrics.pairwise import cosine_similarity
def improved_laplacian_score(X, y, threshold=0.7):
n_samples, n_features = X.shape
W = np.exp(-0.5 * ((np.linalg.norm(X[:, None] - X, axis=2) / 0.5)**2))
D = np.diag(np.sum(W, axis=1))
L = D - W
scores = []
for k in range(n_features):
f = X[:, k]
numerator = f.T @ L @ f
denominator = f.T @ D @ f - (np.sum(f)**2)/n_samples
score = numerator / (denominator + 1e-8)
scores.append(score)
similarity = cosine_similarity(X.T)
penalty = np.mean(similarity, axis=1)
adjusted_scores = np.array(scores) + 0.3 * penalty
selected = np.where(adjusted_scores < threshold)[0]
return selected
def two_stage_selection(X, y, mi_thresh=0.15, lap_thresh=0.7):
mi = mutual_info_classif(X, y)
stage1_idx = np.where(mi > mi_thresh)[0]
X_stage1 = X[:, stage1_idx]
stage2_idx = improved_laplacian_score(X_stage1, y, lap_thresh)
final_idx = stage1_idx[stage2_idx]
return final_idx
","
(2)基于云模型的敏感特征子集辨识:
在初筛特征基础上,进一步提出一种基于云模型与粒子群优化的敏感特征子集筛选方法。首先利用正向云发生器对每种故障状态下的每个特征建立云模型,得到期望Ex、熵En和超熵He三个数字特征。然后计算不同故障状态下同一特征的云模型相似度,采用一种基于最大边界覆盖的相似度度量,该度量既考虑期望距离又考虑熵的差异。若某一特征在所有故障状态下的云模型彼此过于接近(相似度大于零点九),则判定为敏感度低,直接剔除。剩余特征组成候选集,候选集维度降至二十八维。接下来采用二进制粒子群优化算法从候选集中选择最优子集,粒子位置表示特征是否选取,适应度函数结合支持向量机分类准确率(权重零点七)和特征数量惩罚(权重零点三)。粒子群参数设置为种群规模四十,迭代次数一百五十,惯性权重从零点九线性递减至零点四。经过优化后,最终选取的最优特征子集大小在九至十三之间波动,不同的数据集略有差异。在转子故障实验数据(包含正常、不平衡、不对中、碰磨、松动五种状态)上,使用该子集训练的SVM分类器,五折交叉验证平均准确率达到百分之九十六点八,而使用全部初筛特征的准确率为百分之九十三点五。特征子集的平均互信息冗余度仅为零点二一,表明所选特征之间信息重叠很小。云模型方法还赋予了每个特征可解释的物理意义:例如不平衡故障对应的倍频幅值特征的熵较小,表明该特征在同类故障中稳定性好;碰磨故障的时域峰值特征的超熵较大,反映该故障的随机冲击特性。
import numpy as np from scipy.stats import norm from pyswarm import pso class CloudModel: def __init__(self, data): self.Ex = np.mean(data) self.En = np.std(data) * np.sqrt(np.pi/2) self.He = np.std(np.abs(data - self.Ex)) * np.sqrt(np.pi/2) def similarity(self, other): diff_ex = abs(self.Ex - other.Ex) diff_en = abs(self.En - other.En) diff_he = abs(self.He - other.He) score = 1 / (1 + 0.4*diff_ex + 0.3*diff_en + 0.3*diff_he) return score def feature_sensitivity_ranking(X, y): labels = np.unique(y) n_features = X.shape[1] sensitivity = [] for f in range(n_features): clouds = [] for lbl in labels: data_f = X[y==lbl, f] if len(data_f) > 5: clouds.append(CloudModel(data_f)) if len(clouds) < 2: sensitivity.append(0) continue max_sim = 0 for i in range(len(clouds)): for j in range(i+1, len(clouds)): sim = clouds[i].similarity(clouds[j]) if sim > max_sim: max_sim = sim sensitivity.append(1 - max_sim) # higher means more sensitive return np.array(sensitivity) ","(3)集成学习分类器与动态投票机制:在获得最优特征子集后,构建一种基于Bagging和特征随机子空间的集成学习分类器,称为旋转森林增强集成。首先创建二十个基分类器,每个基分类器采用支持向量机(径向基核函数)作为基础模型。对于每个基分类器,从原始训练样本中有放回地抽取百分之七十的样本作为训练集,并从最优特征子集中随机选择百分之六十的特征作为该分类器的特征子空间。此外,引入一种自适应的旋转矩阵,对每个基分类器的特征子空间进行主成分分析旋转,增强基分类器之间的差异性。预测阶段采用动态投票机制:对于待测样本,首先计算其与每种故障状态云模型之间的隶属度,得到初步的类别倾向向量;然后每个基分类器输出一个预测类别,根据该类别对应的倾向值对投票进行加权,加权系数为隶属度除以所有隶属度和。这种动态投票使得靠近决策边界的样本能够获得更合理的融合结果。在测试集上,集成分类器的平均准确率达到百分之九十八点三,相比单一SVM提升了百分之四点九。特别地,对于碰磨与松动这两种易混淆的故障,传统SVM的混淆度为百分之十二,而集成方法降至百分之三点五。计算时间方面,训练二十个基分类器总耗时三点八秒,预测单个样本平均零点零三毫秒,满足在线监测需求。最后将整套算法嵌入LabVIEW开发的转子故障诊断系统中,对来自某化工厂压缩机的实测数据进行诊断,在一百二十次独立测试中,正确诊断一百一十六次,漏报率为百分之三点三,虚报率为百分之二点五。