西储大学轴承故障数据预处理

西储大学轴承各类型故障数据准备

导入python处理包看下

import scipy.io # To use the '.mat' files
import seaborn as sns
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt

看下文件下文件

for root, dirs, files in os.walk("0hp_load_48_KHz", topdown=False):
    for file_name in files:
        path = os.path.join(root, file_name)
        print(path)

看下数据mat内部概况

path = r'0hp_load_48_KHz\7_OR3.mat'
mat = scipy.io.loadmat(path)
mat.items()

list(mat.keys())

 

获取风扇端数据

key_name = list(mat.keys())[3]
DE_data = mat.get(key_name)
fault = np.full((len(DE_data), 1), file_name[:-4])
df_temp = pd.DataFrame({'DE_data':np.ravel(DE_data) , 'fault':np.ravel(fault)})
df_temp

 

plt.figure(figsize=(15,5))
plt.plot(df_temp.iloc[:,0])
plt.show()

 画下这个数据的波形

 处理数据集

df=pd.DataFrame(columns=['DE_data','fault'])

for root, dirs, files in os.walk("0hp_load_48_KHz", topdown=False):
    for file_name in files:
        path = os.path.join(root, file_name)
        print(path)

        mat = scipy.io.loadmat(path)

        key_name = list(mat.keys())[3]
        DE_data = mat.get(key_name)
        fault = np.full((len(DE_data), 1), file_name[:-4])

        df_temp = pd.DataFrame({'DE_data':np.ravel(DE_data) , 'fault':np.ravel(fault)})
        
        df = pd.concat([df,df_temp],axis=0)
        print(df['fault'].unique())
        
df.to_csv('0hp_all_faults.csv',index=False)   

看下数据集情况

df = pd.read_csv('0hp_all_faults.csv')

faults = df['fault'].unique()
for  f in faults:
    plt.figure(figsize=(10,3))
    plt.plot(df[df['fault']==f].iloc[:,0])
    plt.title(f)
    plt.show()

 

 

 

 

 

 

等等。。。。

 拼接看下

plt.figure(figsize=(15,5))
sns.scatterplot(data=df.iloc[::100,:],y='DE_data',x=np.arange(0,len(df),100),hue='fault')
plt.show()

 生成数据集文件

load=3

df=pd.DataFrame(columns=['DE_data','fault'])

for root, dirs, files in os.walk("{}hp_load_48_KHz".format(load), topdown=False):
    for file_name in files:
        path = os.path.join(root, file_name)
        print(path)

        mat = scipy.io.loadmat(path)

        for k in list(mat.keys()):
            if k[5:]== 'DE_time':
                key_name=k
        DE_data = mat.get(key_name)
        fault = np.full((len(DE_data), 1), file_name[:-4])

        df_temp = pd.DataFrame({'DE_data':np.ravel(DE_data) , 'fault':np.ravel(fault)})
        
        df = pd.concat([df,df_temp],axis=0)
        print(df['fault'].unique())
        
df.to_csv('{}hp_all_faults.csv'.format(load),index=False)   

欢迎加微信公众号:轴承故障诊断和寿命预测

 

 

### 凯斯西大学轴承数据预处理方法 #### 数据获取与准备 为了有效开展数据分析工作,首先需要从官方渠道或其他可靠来源下载凯斯西大学(CWRU)的轴承原始振动信号文件[^2]。这些文件通常是以二进制格式存的时间序列数据。 #### 文件读取与解析 由于CWRU数据库中的数据是以特定结构保存,在加载到内存之前需先理解其内部布局。Python提供了多种库来帮助完成这项任务,比如`numpy`可以用来高效地操作数组型数据: ```python import numpy as np def read_binary_file(file_path, dtype=np.float32): with open(file_path, 'rb') as f: data = np.fromfile(f, dtype=dtype) return data.reshape(-1, 1) # 假设每列代表一个传感器通道 ``` 此函数能够将指定路径下的二进制文件转换成易于后续处理的一维或多维向量形式[^1]。 #### 时间戳生成 考虑到采集设备可能记录了多个不同频率下运行状态的信息点,因此有必要为每一组样本附加相应的时间标签以便于时间维度上的关联分析: ```python from datetime import timedelta, datetime def generate_timestamps(start_time='2023-01-01', sample_rate=1e4, length=None): start_dt = datetime.strptime(start_time, '%Y-%m-%d') timestamps = [start_dt + i*timedelta(seconds=1/sample_rate) for i in range(int(length))] return pd.to_datetime(timestamps) # 使用示例 timestamps = generate_timestamps(sample_rate=fs, length=len(data)) ``` 这里假设起始时间为'2023-01-01',可以根据实际情况调整;同时通过给定采样率计算出各时刻的具体日期时间值。 #### 特征工程 针对具体应用场景选取合适的特征对于提升模型性能至关重要。常见的做法是从原始波形中提取统计特性(均值、方差)、频域变换后的系数等作为输入变量供机器学习算法训练使用: ```python import pandas as pd def extract_features(df): features = { 'mean': df.mean(), 'std': df.std(), 'rms': (df ** 2).mean() ** .5, # 更多复杂特征... } return pd.DataFrame(features) features_df = extract_features(pd.DataFrame(data)) ``` 上述代码片段展示了如何基于Pandas DataFrame对象快速构建一组基础特征集合[^3]。 #### 数据分割 最后一步是对整个数据集按照一定比例划分为训练集和测试集两部分,确保评估过程中不会发生过拟合现象: ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( features_df.values, labels, test_size=.2, random_state=42 ) ``` 这样就完成了从原始数据导入直至准备好用于建模前的所有准备工作流程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值