格拉姆角场GAF将时序数据转换为图像并应用于凯斯西储大学轴承故障诊断(Python代码,CNN模型)

 1.运行效果:

格拉姆角场GAF将时序数据转换为图像并应用于凯斯西储大学轴承故障诊断(Python代码)_哔哩哔哩_bilibili

环境库

只要tensorflow版本大于等于2.4.0即可运行 

同样的模型应用于东南大学轴承数据集:格拉姆角场GAF将时序数据转换为图像并应用于东南大学轴承故障诊断(Python代码,CNN模型)_深度学习的奋斗者的博客-CSDN博客

2.GAF的内容

GAF是一种用于时间序列数据可视化和特征提取的技术,通常用于时间序列分类和分析。

GAF的基本思想是将时序数据转换为角度矩阵,然后将这个矩阵可视化为图像。这种可视化方式有助于人们更好地理解和分析时间序列数据。GAF的一种常见用法是在机器学习任务中,将时间序列数据转换为图像特征,然后使用这些特征进行分类、回归或聚类等任务。

3.数据集

3.1 西储大学轴承数据集(CWRU)

 CWRU数据集,每份负载数据集以四分类为例:正常、内圈故障、外圈故障和滚动体故障,也可以考虑故障尺寸,自己改成十分类)

自己也可以把数据集换成其他数据集或者自己的轴承数据集。

 以0HP文件夹为例,打开0HP文件夹

inner、Normal、outer和roller文件夹装载的原始数据集

picture_CNN.py主要功能:首先利用1024的固定长度重叠切割原始数据,生成一维样本,然后利用GAF将一维样本转变成二维图像的程序,然后利用CNN进行故障诊断。

 打开0HPimages文件

随意选取一个样本照片展示 

每种负载下5次实验平均结果 

0HP1HP2HP3HP
99.58%99.68%99.58%99.62%

0HP数据集结果(训练集与测试集比例:4:1)

测试集混淆矩阵 (测试集准确率99.58%)

1HP数据集结果(训练集与测试集比例:4:1)

测试集混淆矩阵  (测试集准确率99.68%)

2HP数据集结果(训练集与测试集比例:4:1) 

 

 

测试集混淆矩阵  

3HP数据集结果(训练集与测试集比例:4:1) 

测试集混淆矩阵  

 

 测试集混淆矩阵  

对项目感兴趣的,可以关注最后一行 

from scipy.io import loadmat
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import numpy as np
import tensorflow as tf
import pickle
import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as scisig
from mpl_toolkits.axes_grid1 import make_axes_locatable
from pyts.datasets import load_gunpoint
#代码和数据集的压缩包:https://mbd.pub/o/bread/mbd-ZJ6bmJdu

抱歉,我是一名AI语言模型,无法提供图形用户界面(GUI)的编程。但是,下面是一个简单的Python GAF模板: ```python import random # GAF参数 POPULATION_SIZE = 10 GENERATION_COUNT = 100 CROSSOVER_RATE = 0.8 MUTATION_RATE = 0.05 # 基因序列长度 GENE_LENGTH = 10 # 目标基因序列 TARGET_GENE = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] # 随机生成初始种群 def generate_population(size): population = [] for i in range(size): chromosome = [] for j in range(GENE_LENGTH): gene = random.randint(0, 1) chromosome.append(gene) population.append(chromosome) return population # 计算适度 def calculate_fitness(chromosome): fitness = 0 for i in range(GENE_LENGTH): if chromosome[i] == TARGET_GENE[i]: fitness += 1 return fitness # 选择操作 def selection(population): fitness_scores = [] for chromosome in population: fitness_scores.append(calculate_fitness(chromosome)) total_fitness = sum(fitness_scores) roulette_wheel = [] for i in range(len(population)): slice_size = int(fitness_scores[i] / total_fitness * 100) for j in range(slice_size): roulette_wheel.append(i) selected = [] while len(selected) < len(population): index = random.choice(roulette_wheel) selected.append(population[index]) return selected # 交叉操作 def crossover(population): for i in range(len(population) - 1): if random.random() < CROSSOVER_RATE: crossover_point = random.randint(1, GENE_LENGTH - 1) parent1 = population[i] parent2 = population[i + 1] child1 = parent1[:crossover_point] + parent2[crossover_point:] child2 = parent2[:crossover_point] + parent1[crossover_point:] population[i] = child1 population[i + 1] = child2 return population # 变异操作 def mutation(population): for i in range(len(population)): for j in range(GENE_LENGTH): if random.random() < MUTATION_RATE: gene = random.randint(0, 1) population[i][j] = gene return population # 运行GAF def run_gaf(): population = generate_population(POPULATION_SIZE) for i in range(GENERATION_COUNT): population = selection(population) population = crossover(population) population = mutation(population) print("Generation:", i + 1, "Best fitness:", max([calculate_fitness(chromosome) for chromosome in population])) if max([calculate_fitness(chromosome) for chromosome in population]) == GENE_LENGTH: break if __name__ == '__main__': run_gaf() ``` 该模板实现了一个简单的GAF用于寻找一个基因序列,使其与目标基因序列匹配。该模板包括以下功能: - 随机生成初始种群 - 计算适度 - 选择操作 - 交叉操作 - 变异操作 您可以根据需要修改参数和实现更复杂的功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习的奋斗者

你的鼓励是我努力的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值