pytorch处理结构化数据

处理结构化数据

数据预处理

主要使用pandas库

import pandas as pd
  • 读取数据集
# 读取。df为DataFrame结构
df = pd.read_csv('../data/adult.csv')
# pandas中unique() 函数返回每个特征的唯一值
# salary是最后要分类的结果
salary_items = df['salary'].unique()
print(salary_items)  # ['>=50k' '<50k']

# 预览一小块数据  head()方法 从开头开始预览。不带参数默认显示5条数据。tail()方法 从结尾预览,默认5条。
data_pre_look = df.head()
print(data_pre_look)

# describe()对数据集进行概览,输出该数据集的计数、最大值、最小值等。
csv_des = df.describe()
print(csv_des)
  • 将数据分成三个类别:
    训练的结果标签:即训练的结果,通过这个结果能够明确的知道训练的任务是什么,是分类的任务,还是回归的任务。
    分类数据:这类的数据是离散的,无法通过直接输入到模型中进行训练。所以在预处理的时候需要优先对这部分进行处理,这也是数据预处理的主要工作之一
    数值型数据:这类数据是直接可以输入到模型中的,但是这部分数据有可能还是离散的,所以如果需要也可以对其进行处理,并且处理后会对训练的精度有很大的提升。此处省略。
# 将数据分成以下三个类别
# 训练结果
result_var = 'salary'
# 分类型数据。csv中,不是数值型数据的表头
cata_names = ['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race', 'sex', 'native-country']
# 数值型数据。CSV中,数值型数据的表头
cont_names = ['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss', 'hours-per-week']
  • 将分类型数据转成数值型数据。并对缺失的数据进行填充。
# 将分类型数据转成数字型数据。并对缺失的数据做填充
# fillna()函数做空值填充。标识成一个与其他值不一样的值即可。
for col in df.columns:
    if col in cata_names:
        df[col].fillna('---')
        df[col] = LabelEncoder().fit_transform(df[col].astype(str))
    if col in cont_names:
        # 数值型做0填充。
        df[col] = df[col].fillna(0)
  • 分割训练数据和标签
Y = df['salary']
Y_label = LabelEncoder()
Y = Y_label.fit_transform(Y)
X = df.drop(columns=result_var)

定义数据集

要使用pytorch处理数据,肯定要使用Dataset进行数据集的定义。

  • 定义数据集
from torch.utils.data import Dataset, DataLoader

# 定义一个简单的数据集
class tabularDataset(Dataset):
    def __init__(self, X, Y):
        self.x = X.values
        self.y = Y

    def __len__(self):
        return len(self.y)

    def __getitem__(self, idx):
        return (self.x[idx], self.y[idx])
  • DataLoader 加载数据
train_ds = TabularDataSet.tabularDataset(X, Y)
# 可以直接索引
print(train_ds[0])

# 训练的过程中,使用DataLoader加载数据
train_dl = DataLoader(train_ds, batch_size=1024, shuffle=True)

github完整代码

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值