美文网首页
2019.3.19-2019.3.22

2019.3.19-2019.3.22

作者: Yankee_13 | 来源:发表于2019-03-25 11:14 被阅读0次

1.Pandas基本操作

Pandas库内将数据转换为一种DataFrame类型进行处理

1).读取数据

data=pd.read_csv(path)

2).提取数据指定行列

data_x=np.asarray(data.ix[:500,:400])

提取了0-499行,0-399列的数据矩阵

读取相应label列/行

data_y = np.asarray(data["BUILDINGID"])

3).对提取数据进行同样操作(apply函数)

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

func表示某一函数,axis=0表示对数据列操作,axis=1表示对数据行操作。

2.pytorch-dataset

1).Dataset的定义

pytorch有自带的一些数据读取方式,但是需要读取指定的数据集时,就需要自己定义了。

from torch.utils.data import Dataset, DataLoader
import torch
from sklearn.preprocessing import scale

class Dataset(Dataset):

    def __init__(self):
        xy = np.loadtxt('./data.csv.gz',dtype=np.float32)
        self.len = xy.shape[0]
        self.x_data = torch.from_numpy(xy[:, 0:-1])
        self.y_data = torch.from_numpy(xy[:, [-1]])

    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]

    def __len__(self):
        return self.len

Dataset定义分为三块

1.__init__

这一部分需要定义数据读取的方法,并对数据进行处理,提供返回量

2.__getitem__

这一部分需要返回数据

3.__len__

返回数据的样本容量

实际上就是构成了一个Dataset的迭代器。
后续操作:

Dataset = DiabetesDataset()
train_loader = DataLoader(dataset=dataset,
                          batch_size=32,
                          shuffle=True,
                          num_workers=2)

另外,如果需要transfrom操作:

transform = transforms.Compose(
            [
                transforms.Scale(size),
                transforms.ToTensor(),
                transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
            ]
        )

3.nn.CrossEntropyLoss()函数的使用

nn.CrossEntropyLoss(input,target)

这里input是一维向量,而target不能是一维向量(也就是one-hot编码不能直接拿来计算)
可通过如下转换:

torch.max(targets, 1)[1]

相关文章

  • 2019.3.19-2019.3.22

    1.Pandas基本操作 Pandas库内将数据转换为一种DataFrame类型进行处理 1).读取数据 2).提...

网友评论

      本文标题:2019.3.19-2019.3.22

      本文链接:https://www.haomeiwen.com/subject/rbecvqtx.html