為了能用深度學(xué)習(xí)來解決現(xiàn)實世界的問題,我們經(jīng)常從預(yù)處理原始數(shù)據(jù)開始,而不是從那些準(zhǔn)備好的張量格式數(shù)據(jù)開始。
在Python中常用的數(shù)據(jù)分析工具中,我們通常使用
pandas
軟件包。像龐大的Python生態(tài)系統(tǒng)中的許多其他擴展包一樣,
pandas
可以與張量兼容。
1、讀取數(shù)據(jù)集
舉一個例子,我們首先(創(chuàng)建一個人工數(shù)據(jù)集,并存儲在CSV(逗號分隔值)文件)中。以其他格式存儲的數(shù)據(jù)也可以通過類似的方式進(jìn)行處理。
import os
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
f.write('NumRooms,Alley,Price\n') # 列名
f.write('NA,Pave,127500\n') # 每行表示一個數(shù)據(jù)樣本
f.write('2,NA,106000\n')
f.write('4,NA,178100\n')
f.write('NA,NA,140000\n')
要[從創(chuàng)建的CSV文件中加載原始數(shù)據(jù)集],我們導(dǎo)入pandas
包并調(diào)用read_csv
函數(shù)。該數(shù)據(jù)集有四行三列。其中每行描述了房間數(shù)量(“NumRooms”)、巷子類型(“Alley”)和房屋價格(“Price”)。
# 如果沒有安裝pandas,只需取消對以下行的注釋來安裝pandas
# !pip install pandas
import pandas as pd
data = pd.read_csv(data_file)
print(data)
2、處理缺失值
注意,“NaN”項代表缺失值。
[為了處理缺失的數(shù)據(jù),典型的方法包括插值法和刪除法,]
其中插值法用一個替代值彌補缺失值,而刪除法則直接忽略缺失值。
在(這里,我們將考慮插值法)。
通過位置索引iloc
,我們將data
分成inputs
和outputs
,
其中前者為data
的前兩列,而后者為data
的最后一列。
對于inputs
中缺少的數(shù)值,我們用同一列的均值替換“NaN”項。
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
print(inputs)
[對于inputs
中的類別值或離散值,我們將“NaN”視為一個類別。]
由于“巷子類型”(“Alley”)列只接受兩種類型的類別值“Pave”和“NaN”,pandas
可以自動將此列轉(zhuǎn)換為兩列“Alley_Pave”和“Alley_nan”。
巷子類型為“Pave”的行會將“Alley_Pave”的值設(shè)置為1,“Alley_nan”的值設(shè)置為0。
缺少巷子類型的行會將“Alley_Pave”和“Alley_nan”分別設(shè)置為0和1。文章來源:http://www.zghlxwxcb.cn/news/detail-599731.html
inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
3、轉(zhuǎn)換為張量格式
[現(xiàn)在inputs
和outputs
中的所有條目都是數(shù)值類型,它們可以轉(zhuǎn)換為張量格式。]
當(dāng)數(shù)據(jù)采用張量格式后,可以通過在 :numref:sec_ndarray
中引入的那些張量函數(shù)來進(jìn)一步操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-599731.html
import torch
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
print(X)
print(y)
到了這里,關(guān)于動手學(xué)深度學(xué)習(xí)——數(shù)據(jù)預(yù)處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!