【課后答疑】
tensor張量是數(shù)學(xué)中定義的概念,數(shù)組array是計算機中的一個概念。深度學(xué)習(xí)里混著用的只嚣。
新分配了y的內(nèi)存,那么之前y的內(nèi)存會自動釋放嗎艺沼?——python會給自動釋放
chapter_preliminaries/pandas.ipynb
為了處理缺失的數(shù)據(jù)册舞,典型的方法包括插值法和刪除法。其中插值法用一個替代值彌補缺失值障般,而刪除法則直接忽略缺失值调鲸。
? ? ?NumRooms? ?Alley?
0? ? ? NaN? ? ? ? ? ? Pave??
1? ? ? 2.0? ? ? ? ? ? ? ?NaN?
2? ? ? 4.0? ? ? ? ? ? ? ?NaN
3? ? ? NaN? ? ? ? ? ? NaN
插值法可以用fillna()函數(shù),把這里面所有NA(缺失值)用指定的值替換掉剩拢,比如用均值:
inputs = inputs.fillna(inputs.mean())
? ? ? NumRooms Alley
0? ? ? 3.0? ????????????Pave
1? ? ? 2.0? ???????????? NaN
2? ? ? 4.0? ???????????? NaN
3? ? ? 3.0? ???????????? NaN
某一列是string類型线得,沒有均值,就不會變徐伐。這種也可以將其視NaN視為一個類贯钩。
例如(“Alley”)列只有兩種類型的值“Pave”和“NaN”,?pandas可以自動將此列轉(zhuǎn)換為兩列“Alley_Pave”和“Alley_nan”。
inputs = pd.get_dummies(inputs, dummy_na=True)
?? ? ? ?NumRooms? ?Alley_Pave? ?Alley_nan
0? ? ? 3.0? ? ? ?? ? ? ? ?? ? ? ? 1? ? ? ? ? ? ?? ? ? ?? ? 0
1? ? ? 2.0? ? ? ? ? ? ? ? ? ??? ? 0? ? ?? ? ? ? ? ?? ? ? ? 1
2? ? ? 4.0? ? ? ?? ? ? ? ? ?? ? ? 0? ? ? ? ? ? ? ? ??? ? ? 1
?3? ? ? 3.0? ? ? ?? ? ?? ? ? ? ? ? 0? ? ? ? ?? ? ? ? ? ?? ? 1
現(xiàn)在inputs和outputs中的所有條目都是數(shù)值類型角雷,它們可以轉(zhuǎn)換為張量格式祸穷。
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
X:(tensor([[3., 1., 0.],
? ? ? ? [2., 0., 1.],
? ? ? ? [4., 0., 1.],
? ? ? ? [3., 0., 1.]], dtype=torch.float64),
y:tensor([127500, 106000, 178100, 140000]))
傳統(tǒng)的python一般默認浮點數(shù)為float64,但是64位浮點數(shù)對深度學(xué)習(xí)來說計算有點慢勺三,通常用32位浮點數(shù)雷滚。
課后:pandas刪除缺失值最多的列
# 方案一
#統(tǒng)計每一列的NaN,找出最多的吗坚,按列刪掉(data不變)
data.drop(data.isnull().sum().idxmax(),axis=1)
# 方案二
#統(tǒng)計每一列非缺失值的個數(shù)祈远,找出最小的,按列刪掉商源,并替換原來的data(data變)
data.drop(data.count(axis='index').idxmin(),axis=1,inplace=True)