一、数据源

  变速箱故障诊断数据集包括使用SpectraQuest的变速箱故障诊断模拟器记录的振动数据集。数据集使用4个振动传感器放置在四个位置,在负载从“0”到“90%”的变化下进行记录。包括两种不同的场景:
  1)健康状况
  2)齿轮破损情况
  总共有20个文件,10个是正常变速箱的、10个是坏掉的。每个文件对应于从0%到90%的给定负载,步进为10%。
  数据免费下载地址Gearbox Fault Diagnosis

二、相关代码

  代码中提取数据特征(postprocess.get_feature.SignalFreF、postprocess.get_feature.SignalTimeF)及对各特征进行评分(postprocess.feature_selection.FeatureFisherScore)的代码直接copy的Pyhon在振动信号处理中的高级应用(一):振动信号特征(时域、频域)提取以及Pyhon在振动信号处理中的高级应用(十):监督式特征的选择方法(Fisher Score、ReliefF),涉及版权,需要的同学自行查看哈。

2.1 config文件

# Data storage location
SOURCE_DIR = 'D://datas//Gearbox_1//'
# Sample rate
FS = 30
# The size of train data
TRAIN_SIZE = 200
# The size of test data
TEST_SIZE = 20
# The length of data
LEN_DATA = 4 * FS

2.2 data_process文件

import os
import numpy as np
import pandas as pd
from config import *
from algorithm import postprocessclass data_process:def __init__(self):# import configself.source_dir = SOURCE_DIR + 'data//'self.fs = FSself.train_size = TRAIN_SIZEself.test_size = TEST_SIZEself.len_data = LEN_DATA# get datasource_files = os.listdir(self.source_dir)dfs = []for source_file in source_files:file_names = os.listdir(self.source_dir + source_file)for file_name in file_names:[state, load] = file_name.split('.')[0].split('30hz')data_file = self.source_dir + source_file + '//' + file_namedf = pd.read_csv(data_file)df['state'] = statedf['load'] = loaddfs.append(df)dfs = pd.concat(dfs).reset_index().rename(columns={'index': 'sample_index'})self.readings = dfs.melt(id_vars=['sample_index', 'state', 'load'],value_vars=['a1', 'a2', 'a3', 'a4'],var_name='sensor',value_name='reading')self.state = set(self.readings['state'].values)self.load = set(self.readings['load'].values)self.sensor = set(self.readings['sensor'].values)# helper function to filter the datasetdef rdg(self, state=None, load=None, sensor=None):df_st = self.readings[self.readings.state == state] if state is not None else self.readingsdf_lo = df_st[df_st.load == load] if load is not None else df_stdf_se = df_lo[df_lo.sensor == sensor] if sensor is not None else df_loreturn df_se# extract the features of sensor datadef cal_feature(self):dfs_train = []dfs_test = []for _state in self.state:for _load in self.load:_df = self.rdg(state=_state, load=_load)# generate training data and test dataindexs = []for i in range(self.train_size + self.test_size):while True:index = np.random.randint(len(_df)//4 - self.len_data)if index not in indexs:indexs.append(index)breakelse:passfeatures = []for _sensor in self.sensor:sig = _df[_df.sensor == _sensor].reading.values_sig = sig[index: index + self.len_data]features.append(postprocess.get_feature.SignalFreF(_sig, self.fs))features.append(postprocess.get_feature.SignalTimeF(_sig))features = np.concatenate(features)df = pd.DataFrame(np.array(features)).Tdf['state'] = _statedf['load'] = _loadif i < self.train_size:dfs_train.append(df)else:dfs_test.append(df)self.train_features = pd.concat(dfs_train).reset_index().drop(columns='index')self.test_features = pd.concat(dfs_test).reset_index().drop(columns='index')if __name__ == "__main__":data_pro = data_process()data_pro.cal_feature()data_pro.train_features.to_csv(SOURCE_DIR + 'train_data.csv')data_pro.test_features.to_csv(SOURCE_DIR + 'test_data.csv')

2.3 show_data


import numpy as np
import pandas as pd
from config import *
from algorithm import postprocess
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# encode the type
train_data = pd.read_csv(SOURCE_DIR + 'train_data.csv')
test_data = pd.read_csv(SOURCE_DIR + 'test_data.csv')
train_data = train_data.astype({'state': 'string', 'load': 'string'})
test_data = test_data.astype({'state': 'string', 'load': 'string'})
label_encoder = LabelEncoder()
# generate train_data
types_train = label_encoder.fit_transform(train_data['state'].values)
df_train = train_data.iloc[:, :-2]
df_train['type'] = types_train
# generate test_data
types_test = label_encoder.transform(test_data['state'].values)
df_test = test_data.iloc[:, :-2]
df_test['type'] = types_testscores = postprocess.feature_selection.FeatureFisherScore(df_train, 'type')
# scores.to_csv(SOURCE_DIR + 'scores.csv')
indexs = np.argsort(-scores)[:5]types = set(df_train['type'].values)
plt.figure(figsize=(10, 5))
for type, marker in zip(types, ['*', '.']):df = df_train[df_train.type == type]plt.scatter(df.iloc[:, 31], df.iloc[:, 8], marker=marker)
plt.show()model = RandomForestClassifier(n_estimators=200)
train_inputs = df_train.iloc[:, :-1].values
train_targets = df_train.iloc[:, -1].values
model.fit(train_inputs, train_targets)test_inputs = df_test.iloc[:, :-1].values
test_targets = df_test.iloc[:, -1].valuesprint("train_data: the accuracy is {:.2%}.".format(accuracy_score(model.predict(train_inputs), train_targets)))
print("test_data: the accuracy is {:.2%}.".format(accuracy_score(model.predict(test_inputs), test_targets)))

三、效果展示


故障诊断实战系列(一)齿轮箱(kaggle)故障诊断相关推荐

  1. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Toxic Language Detection

    Rasa课程.Rasa培训.Rasa面试.Rasa实战系列之 Toxic Language Detection Toxic Language Detection Kaggle: https://www ...

  2. 【机器学习】实战系列五——天文数据挖掘实验(天池比赛)

    系列文章目录 学习笔记: [机器学习]第一章--机器学习分类和性能度量 [机器学习]第二章--EM(期望最大化)算法 [机器学习]第六章--概率无向图模型 实战系列: [机器学习]实战系列一--波士顿 ...

  3. MP实战系列(二)之集成swagger

    其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...

  4. 07.GitHub实战系列~7.Git之VS2013团队开发(如果不想了解git命令直接学这篇即可)...

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ---------------------------------------- ...

  5. 商城模块java_Java商城秒杀系统实战系列~构建SpringBoot多模块项目

    摘要:本篇博文是"Java秒杀系统实战系列文章"的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项 ...

  6. shiro实战系列(一)之入门实战

    一.什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.   Apache Shiro 的首要目标是易于使用和理解.安全有 ...

  7. 【直播回顾】云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第19讲):Java Spring Cloud微服务架构模式与开发实战...

    主讲人:徐雷(云栖社区特邀Java专家) 徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Ja ...

  8. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 l  主机操作系统:Windows 64位, ...

  9. Skype For Business 2015实战系列6:后端数据库安装CU6补丁

    Skype For Business 2015实战系列6:后端数据库安装CU6补丁 安装好SQL Server 2014以后需要为其安装CU6补丁,以满足Skype For Business Serv ...

最新文章

  1. python函数高级运用
  2. Python中由生成杨辉三角代码所思考的一些问题
  3. SQL Cookbook:一、检索记录(8)在SELECT语句中使用条件逻辑
  4. 数据库流行度9月排行榜:Oracle 的老骥伏枥和 MongoDB 逆风飞扬
  5. 共享单车或开启了物联网的大门,新的变革即将开启
  6. 那些长期单身的人,到底在想什么?
  7. Java Lock的使用
  8. [题解]一本通1240:查找最接近的元素
  9. 阿里钉钉向1000万企业组织免费开放在家办公系统
  10. JDY-1110B电压继电器
  11. 计算机网络试题及答案(史上最全)
  12. 解决vue项目在ie浏览器下白屏问题;ie运行项目报正在兼容性是图中运行,因为选中了“在兼容性视图中显示Intranet站点”
  13. 理解和应用向量积与数量积
  14. 机器学习-推荐系统中基于深度学习的混合协同过滤模型
  15. 完整流程 Flutter 集成 Rust 多语言跨端开发基础案例
  16. 公共数据库介绍~联合国数据库UNDATA
  17. (CSA 共识评估调查问卷)CSA Consensus Assessments Initiative Questionnaire
  18. JDK9 的字符串底层原理是什么?
  19. linux软raid mdadm命令详讲
  20. 【Javaweb学习笔记】在Eclipse中创建Web项目

热门文章

  1. win10系统下利用QEMU安装ARM架构的银河麒麟桌面操作系统V10
  2. MSVCP100.dll 丢失的问题
  3. “有电才‘型’2013主流智能手机耐力挑战赛” 挑战者七:联想P780
  4. 我的世界(2)-服务器菜单(Chestcommands插件)
  5. 免费硬盘数据恢复 DiskGenius
  6. 计算机型号或配置,查看电脑各项配置参数的方法
  7. 订单系统和前台系统的交互---预订单--订单--支付--登录?
  8. mac xquartz+iterm2
  9. 29款英文SEO优化工具介绍
  10. 2018年上半年软考各科目真题及答案下载