摘要:import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.svm import SVCfrom sklearn.mode
代码简单说明
1.信号生成:
模拟4类故障(可扩展至10类)
含周期性冲击、调制效应和高斯噪声
2.时延重构:
默认嵌入维度 d=3,时延 τ=10 采样点
3.路径签名:
实现2阶路径积分特征
递归计算各阶张量积特征
4. 特征降维:
PCA保留95%方差
5.分类模型:
使用RBF核SVM
展示混淆矩阵可视化
算法公式与流程
1. 时延重构路径空间
公式:
2. 路径重积分特征
k阶路径签名:
3. 主成分分析降维
目标:
4. SVM分类模型
优化目标:
部分代码如下:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.svm import SVCfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score, confusion_matrixfrom itertools import productplt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题# 1. 模拟多故障振动信号生成# def generate_fault_signal(fs, duration, fault_type):"""生成10种不同类型的故障信号"""t = np.linspace(0, duration, int(fs*duration))freq_dict = {'normal': 0,'inner_race': 100, # 内圈故障频率'outer_race': 80, # 外圈故障频率'ball_fault': 60, # 滚动体故障频率# 其余6种故障类型扩展...}base_freq = freq_dict[fault_type]# 基础冲击信号impacts = np.zeros_like(t)if base_freq > 0:interval = int(fs / base_freq)impacts[::interval] = 1.0# 调制效应mod = 0.5 * (1 + np.sin(2 * np.pi * 0.5 * t)) # 调制频率0.5Hzsignal = np.convolve(impacts, np.exp(-50*np.linspace(0, 0.1, int(fs*0.1))), 'same') * mod# 添加噪声noise = 0.1 * np.random.randn(len(t))return signal + noise# 2. 时延重构路径构建# def time_delay_embedding(signal, d=3, tau=10):"""构建d维时延嵌入路径"""N = len(signal)embedded = np.zeros((N - (d-1)*tau, d))for i in range(d):embedded[:, i] = signal[i*tau : N - (d-1-i)*tau]return embedded知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
担任《Mechanical System and Signal Processing》《中国电机工程学报》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测。
来源:小千科技每日一讲