CMAPSSDataNASA前期数据预处理

对于RUL的入门,后期的训练模型代码好找,下面给大家简单介绍一下数据的预处理部分

  • 1、数据介绍

对于数据的介绍有很多文章,此处就不做赘述了,大家也可以自己去搜搜好的帖子,路过可以瞧瞧以下几篇帖子👇

CMAPSS的个人理解和CMAPSS、PHM08、09、12下载地址_cmapss数据集介绍-CSDN博客

使用LSTM实现C-MAPSS数据集里面的剩余寿命预测(Pytorch)-CSDN博客

  • 2、数据集下载

下面是网盘链接,直接下载就行,对照着上面的介绍,大家悟一悟哈

链接:https://pan.baidu.com/s/14Se4CR1BGSD17aFNWcqLcg 
提取码:haha

  • 3、数据处理步骤

3个步骤:加载数据——滑动窗口处理数据——数据归一化

  • 加载数据
import pandas as pd
import numpy as np

# 加载数据
columns = ['engine_id', 'cycle', 'setting1', 'setting2', 'setting3'] + [f's{i}' for i in range(1, 22)]
df = pd.read_csv('CMAPSSDataNASA./train_FD001.txt', sep='\s+', header=None, index_col=False, names=columns)


# 计算每个引擎的RUL
df['RUL'] = df.groupby('engine_id')['cycle'].transform(max) - df['cycle']

df

运行结果大致如下:

  • 滑动窗口处理数据
def sliding_window_dataframe(data, window_size, step_size=1):
    windows = []
    labels = []
    for engine_id in data['engine_id'].unique():
        engine_data = data[data['engine_id'] == engine_id]
        for start in range(len(engine_data) - window_size + 1):
            end = start + window_size
            windows.append(engine_data.iloc[start:end, 2:-1].values)  # 不包含engine_id和cycle列
            labels.append(engine_data.iloc[end-1, -1])  # 使用窗口最后一个周期的RUL作为标签
    return np.array(windows), np.array(labels)


window_size = 30
step_size = 1
X, y = sliding_window_dataframe(df, window_size=window_size, step_size=step_size)

对于输出的解释:

X(特征):X是一个三维数组,其中第一维对应于不同的窗口,第二维对应于窗口内的时间步(在这个例子中是30个周期),第三维对应于每个时间步的特征(传感器读数和设置值)。因此,如果你有100个窗口,每个窗口30个时间步,每个时间步20个特征,则X的形状将是(100, 30, 20)。

y(标签):y是一个一维数组,每个元素对应于一个窗口的RUL标签。数组的长度与窗口的数量相同,因此如果你有100个窗口,y的形状将是(100,)。

即,一个矩阵对应一个数值。这块强烈建议多想一想以下两点:

①之前的机器学习比如UCI数据分类集,都是一行x对应一个y,现在是一个矩阵块对应一个y。

②剩余寿命就是总寿命-现在的寿命值!

  • 数据归一化
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 假设X是特征数据
scaler = StandardScaler()
# 对每个特征独立进行标准化
num_instances, num_time_steps, num_features = X.shape
X_reshaped = X.reshape(-1, num_features)  # 将X重塑为2D,以便进行标准化
X_scaled = scaler.fit_transform(X_reshaped)  # 标准化
X = X_scaled.reshape(num_instances, num_time_steps, num_features)  # 将X重塑回3D


from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

好了!到此就划分完成了训练集和验证集!后面用test_FD001作为测试集!即可!

后续的有空了再更新,比如最简单的CNN模型来预测(啊,还没学会如何调整模型,结果好差TAT)

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
数据挖掘是从大量数据中提取有用信息的过程,而数据预处理是数据挖掘的重要步骤之一,它包括数据清洗、数据集成、数据变换和数据规约等操作。Python是一种常用的编程语言,也有很多用于数据挖掘和数据预处理的库和工具。 在Python中,有一些常用的库可以用于数据挖掘和数据预处理,例如: 1. NumPy:用于进行数值计算和数组操作,可以处理大规模的数据集。 2. Pandas:提供了高效的数据结构和数据分析工具,可以进行数据清洗、转换和整合等操作。 3. Scikit-learn:是一个机器学习库,提供了各种常用的数据挖掘算法和工具,包括数据预处理方法。 4. Matplotlib和Seaborn:用于数据可视化,可以绘制各种图表和图形,帮助理解和分析数据。 在进行数据预处理时,常见的操作包括: 1. 数据清洗:处理缺失值、异常值和重复值等问题。 2. 数据集成:将多个数据源合并为一个整体,解决数据冗余和不一致性问题。 3. 数据变换:对数据进行转换,例如标准化、归一化、离散化等。 4. 数据规约:降低数据维度,减少数据存储和计算的复杂性。 以下是一些常用的Python代码示例,用于数据预处理: 1. 使用Pandas读取和处理数据: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv('data.csv') # 处理缺失值,使用均值填充 data.fillna(data.mean(), inplace=True) # 处理重复值 data.drop_duplicates(inplace=True) # 数据转换,标准化 data['feature'] = (data['feature'] - data['feature'].mean()) / data['feature'].std() # 数据规约,PCA降维 from sklearn.decomposition import PCA pca = PCA(n_components=2) data_reduced = pca.fit_transform(data) ``` 2. 使用Scikit-learn进行数据预处理: ```python from sklearn.preprocessing import Imputer, StandardScaler from sklearn.decomposition import PCA # 处理缺失值,使用均值填充 imputer = Imputer(strategy='mean') data_imputed = imputer.fit_transform(data) # 数据转换,标准化 scaler = StandardScaler() data_scaled = scaler.fit_transform(data_imputed) # 数据规约,PCA降维 pca = PCA(n_components=2) data_reduced = pca.fit_transform(data_scaled) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值