數(shù)據(jù)預(yù)處理是指將原始數(shù)據(jù)讀取進來使得能用機器學(xué)習(xí)的方法進行處理。
首先介紹csv文件:
CSV 代表逗號分隔值(comma-separated values),CSV 文件就是使用逗號分隔數(shù)據(jù)的文本文件。
一個 CSV 文件包含一行或多行數(shù)據(jù),每一行數(shù)據(jù)代表一個記錄。每個記錄包含一個或多個數(shù)值,使用逗號進行分隔。另外,一個 CSV 文件中的所有數(shù)據(jù)行都包含相同數(shù)量的值。
我們通常使用 CSV 文件存儲表格數(shù)據(jù),很多軟件都支持這種文件格式,例如 Microsoft Excel(新建工作簿保存為.csv即可) 和 Google Spreadsheet。
python可以使用內(nèi)置的csv模塊讀取csv文件。
一、數(shù)據(jù)預(yù)處理
1.首先要找到j(luò)upyter notebook創(chuàng)建地文件存放地位置。文章來源:http://www.zghlxwxcb.cn/news/detail-765662.html
找到該路徑。
可以看出jupyter與保存地本地文件夾一致。
2.在jupyter notebook里的DataSolving中編寫代碼:
說明:(1)os.makedirs()用于遞歸地創(chuàng)建目錄,exist_ok=True指定后如果該目錄已存在也不報錯;
(2)os.path.join()用于組合一個或多個路徑名,os.path.join(‘…’,‘data’,‘house_tiny.csv’)的返回值為"…\data\house_tiny.cssv。
程序運行之后:
本地打開文件:
3.也可讀取.csv文件,使用pandas。
4.可以使用fillna()對.csv文件中的空值(不是0,而是缺失)進行填充。
可以看到NumRoom那一列的空值被填上了均值(data.mean()表示一列的空值處填充該列原本不為空的元素的均值),而Alley那一列的空值沒有被填充,因為該列是字符串,沒有均值。
對于不是數(shù)值的,可以將空值是為一個類別,處理如下:
5.將從.csv文件中讀取的數(shù)據(jù)轉(zhuǎn)為torch張量。
二、矩陣
1.創(chuàng)建矩陣和矩陣的轉(zhuǎn)置。
2.矩陣與向量的乘積torch.mv([矩陣名],[向量名])
3.矩陣與矩陣的運算torch.mm([矩陣名],[矩陣名])
4.矩陣的范數(shù)
5.矩陣計算(求導(dǎo))
基于高數(shù)的知識,y=3x^2+2x,y’=6x+2,當(dāng)x=2時,y’=14。該過程用pytorch實現(xiàn)為:
說明:(1)創(chuàng)建一個張量x,并設(shè)置其requires_grad參數(shù)為True,程序?qū)粉櫵袑τ谠搹埩康牟僮?,?dāng)完成計算后通過調(diào)用.backward(),自動計算所有的梯度(梯度相當(dāng)于導(dǎo)數(shù),即方向?qū)?shù)的最大值),這個張量所有的梯度將會自動累積到grad屬性。這里x.grad是y關(guān)于x的導(dǎo)數(shù)。
(2)創(chuàng)建了一個關(guān)于x的函數(shù)y,torch.pow(x,2)相當(dāng)于x2即x的平方。
(3)y.backward()是利用反向傳播機制。
三種不同的求導(dǎo)情況:
(1)張量對標(biāo)量求導(dǎo):
可以這樣理解:
(2)標(biāo)量對張量求導(dǎo):
看下面的例子:
設(shè)x=[x1,x2,x3],則z=x12+x22+x32+6,則
標(biāo)量對向量求導(dǎo)本質(zhì)上是函數(shù)對各個自變量求導(dǎo),這里只是把各個自變量看成一個向量。
(3)張量對張量求導(dǎo)
理解:
現(xiàn)有如下問題,已知
其中函數(shù)f(y1,y2,y3)的具體定義未知,現(xiàn)在求:
根據(jù)多元函數(shù)求導(dǎo)法則:
上面3個等式可以寫成矩陣相乘的形式:
叫做雅可比式,雅可比式可以根據(jù)已知條件求出,哪怕不知道f(y1,y2,y3)的具體形式。
上面的張量是由pytorch的backward函數(shù)的gradient參數(shù)提供。
用pytorch實現(xiàn):
和代碼運行結(jié)果一樣。
補充:文章來源地址http://www.zghlxwxcb.cn/news/detail-765662.html
到了這里,關(guān)于pytorch入門2--數(shù)據(jù)預(yù)處理、線性代數(shù)的矩陣實現(xiàn)、求導(dǎo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!