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

如何将文件夹中多CSV文件末尾双字符类别编码为1-10的数字标签?

类别标签全为0的问题修复方案

问题根源

  • 字符串切片逻辑错误:你用f[-5:7]提取类别完全不对,文件名是Folder_file1_MR这类格式,末尾两位才是类别标识,应该用f[-2:]取最后两个字符。原切片会让所有target_all里的元素内容一致,LabelEncoder自然把所有相同值编码成0。
  • 冗余报错代码:那段for i, j in range(list_files): dataset = pd.read_csv(list_files)完全没用,而且range(list_files)本身就会报错(range需要整数参数,你传了列表),必须删掉。

修复步骤

  1. 修正类别提取逻辑:把target_all.append(f[-5:7])改成target_all.append(f[-2:]),精准获取文件名末尾的两位类别标识。
  2. 删除无效代码:移除那段报错的for循环,避免运行时抛出异常。
  3. 验证类别有效性(可选):编码前可以执行print(set(target_all)),确认是否包含10种不同类别,确保提取逻辑正确。

修正后的完整代码

import os
import numpy as np
from sklearn import preprocessing

# 替换成你自己定义的特征提取函数
def extract_features(data):
    # 示例:提取数据均值作为特征,根据你的需求修改逻辑
    return np.mean(data, axis=0)

# 替换为你的实际文件夹路径
FOLDNAME = "./your_target_folder"
list_files = os.listdir(FOLDNAME)

features_all = []
target_all = []
le = preprocessing.LabelEncoder()

for i, f in enumerate(list_files):
    file_path = os.path.join(FOLDNAME, f)
    data = np.genfromtxt(file_path, delimiter=",")
    # 正确提取末尾两位类别标识
    target_all.append(f[-2:])
    features_all.append(extract_features(data))

features_all = np.asarray(features_all)
target_all = le.fit_transform(target_all)

# 可选:查看类别与编码的对应关系
print("类别编码对应表:")
print(dict(zip(le.classes_, range(len(le.classes_)))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:19:59