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

PyTorch模型构建问题:标签被误纳入特征张量如何解决?

解决方案:分离PyTorch数据集的特征与标签字段

问题核心是标签字段Price_Night未被正确从特征集中排除,以下是两种直接有效的修复方式:

1. 修复load_airbnb函数(根源解决)

问题大概率出在load_airbnb函数未移除标签列,修改该函数确保特征集不包含目标字段:

def load_airbnb(data, label_col):
    # 提取标签列
    label = data[label_col]
    # 从原始数据中删除标签列,得到纯特征集
    features = data.drop(columns=[label_col])
    # 若有其他预处理(如标准化、编码)可在此添加
    return features.values, label.values

这个方法从数据源头分离特征与标签,是最规范的处理方式。

2. 无法修改load_airbnb时,在Dataset中手动移除标签列

如果不能改动load_airbnb函数,可在Dataset初始化阶段手动剔除特征中的标签列:

class AirbnbNightlyPriceImageDataset(Dataset):
    def __init__(self) -> None:
        self.data = pd.read_csv('tabular_data/clean_tabular_data.csv')
        self.features, self.label = load_airbnb(self.data, 'Price_Night')
        # 获取标签列在原始数据中的索引位置
        label_col_index = self.data.columns.get_loc('Price_Night')
        # 从特征数组中删除对应列
        self.features = np.delete(self.features, label_col_index, axis=1)

    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, idx):
        features = self.features[idx,:]
        features = torch.tensor(features, dtype=torch.float32)
        label = self.label[idx].item()
        return (features, label)

验证修复效果

运行以下代码确认特征与标签已完全分离:

example = next(iter(train_loader))
print("特征张量形状:", example[0].shape)
print("特征数据:", example[0])
print("标签数据:", example[1])

正常情况下,特征张量的列数会比原来少1,且特征中不再出现与标签一致的数值(如示例中的49、231)。

内容的提问来源于stack exchange,提问作者Lewis-010

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:10:47