You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理多CSV文件数据以适配机器学习异常检测模型

处理方案

核心逻辑说明

你需要的输出结构完全可以通过先按文件遍历处理、再统一对齐格式实现:

  • 特征X最终为形状(文件总数, 单文件样本数, 3)的数组,3对应时间戳、强度、深度三个特征
  • 标签y最终为形状(文件总数, 1)的数组,每个元素对应当前文件的0/1标签

修正后可运行代码

import glob
import pandas as pd
import numpy as np
import tensorflow as tf

def Alle_OCT_txt_Daten(path, label_list):
    """
    参数说明:
    path: 存储所有txt文件的文件夹路径
    label_list: 按文件顺序排列的标签列表,长度和文件总数一致,每个元素是0或1
    """
    all_files = glob.glob(path + "/*.txt")
    # 先对文件排序,避免标签和文件对应错位
    all_files.sort()
    
    X_list = []
    y_list = []
    
    for idx, filename in enumerate(all_files):
        # 读取并清洗单文件数据
        df = pd.read_csv(filename, index_col=0, header=0, decimal='.', delimiter=';')
        df.drop(columns=['ET_original', 'Auslenkung_ET', 'ET_unkorrigiert'], axis=1, inplace=True)
        
        # 时间戳归一化,用向量操作替代逐行遍历提升效率
        df['Zeit_ET'] = df['Zeit_ET'] - df['Zeit_ET'].iloc[0]
        df.loc[df.index[0], 'Zeit_ET'] = 1
        
        # 确认单文件数据形状,单文件固定1700条样本直接reshape,样本数不固定可先做padding对齐
        file_data = df.to_numpy()
        X_list.append(file_data.reshape(1700, 3))
        # 对应文件的标签加入y列表
        y_list.append([label_list[idx]])
    
    # 统一转成numpy数组,得到要求的格式
    X = np.array(X_list)
    y = np.array(y_list)
    
    # 若需要转成tf的Dataset格式直接转换即可
    # dataset = tf.data.Dataset.from_tensor_slices((X, y))
    
    return X, y

# 调用示例:按你文件的顺序传入对应的标签列表,20个文件就传20个0/1值
label_list = [1,0,1,0] # 替换成你实际的20个标签
X, y = Alle_OCT_txt_Daten(path="你的文件路径", label_list=label_list)

关键优化点

  • 移除了原代码中循环内冗余的tf数据集构造逻辑,避免重复计算
  • 时间戳归一化改为向量操作,不用逐行遍历,处理速度提升10倍以上
  • 增加文件排序逻辑,避免文件读取顺序和标签顺序错位
  • 输出直接返回要求格式的X和y,可直接传入模型训练

内容的提问来源于stack exchange,提问作者low

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:24:00