2019.3.19-2019.3.22

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的迭代器。
后續(xù)操作:

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]
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容