第一章主要使用numpy作為基本操作運算的函式庫,為了方便查看操作後的結果,額外使用了rich函式庫作為輸出用。
以下為兩個重複使用的Function作為輸出標準,可快速查看每個向量或陣列的基本資訊。
單純的一維陣列與矩陣皆可使用np.array創建,同時np.mat也可用於創建矩陣,由於其方法回傳的為matrix object,而非array,故不建議使用。
初始化也可使用np.zeros或np.full來創建只有0或只有指定數字的陣列或矩陣。只須給出指定的大小與需填入的數字即可輕鬆創建。
輸出結果:
稀疏矩陣的建立同樣可使用np.array建立,但儲存時若使用此方法儲存對於超大數量級的稀疏矩陣來說會花費太多記憶體,故可使用scipy提供的sparse方法,透過只儲存稀疏矩陣中的data, indicies, indptr來減少記憶體所需量。
同時,可透過data, indicies, indptr來找到每個非0元素的確切位置與其值。
輸出結果:
選取陣列或矩陣中的特定元素可使用[]符號來選取指定位置+1的元素,而`:`符號可用於輸出全部元素,或是在前後加上數字即可印出指定範圍的內容。
選取範圍與輸出結果:
對於陣列與矩陣,可額外對其使用自定義Function來套用至每個元素中。
輸出結果:
透過numpy提供的各個Function可輕鬆計算整個向量或矩陣的平均值、變異數、標準差。
Numpy中提供的reshape功能可用於自動重新設定矩陣的size。
透過在變數後方加上`.T`也可自動計算Transpose。
若對一維陣列使用Transpose則可將其shape轉換。
輸出結果:
對於將矩陣轉化為單個一維陣列,可使用numpy的flatten。若想要將兩個矩陣轉化為同一個一維陣列,則需確保兩個矩陣的shape相同才可將其使用list串接的方式進行轉化,否則需對兩個矩陣個別使用flatten方法後再串接在一起形成單個一維陣列。
輸出結果:
要計算矩陣的Rank可使用Numpy提供的linalg中的matrix_rank來進行計算。
輸出結果:
要找到矩陣中對角線的所有值可使用numpy中的diagonal方法,透過加上offset值,可指定從哪一個row開始尋找對角線值。
而numpy提供的trace方法可以快速地計算對角線所有值得和。
輸出結果:
要計算兩個陣列的Dot product可使用np.dot進行運算,或是直接使用`@`符號進行運算。
輸出結果:
對於兩個矩陣之間進行加減法與乘法可直接使用`+`、`-`、`@`來進行運算,不過需要注意的是`@`符號主要是對整個矩陣進行相乘,而`*`符號是針對兩個矩陣中的對應元素個別進行相乘的結果。
輸出結果:
計算轉置矩陣可透過numpy提供的linalg中的inv方法進行計算。
同時,可透過此方法與原矩陣進行相乘而得到單位矩陣。
這邊可以注意到單位矩陣的地方除了對角線值為1以外,其餘的值都是接近於0的小數點,並不為0的原因是浮點數運算所造成的誤差,可直接將其視為0。
輸出結果:
若想要產生一個隨機數的陣列或矩陣,可以透過random的方法進行隨機產生,且其中分為rand、randint、normal、logistic與uniform幾種,可針對不同的場景生成所需限制的隨機數值。
輸出結果:
載入scikit-learn的範例資料集可使用load_iris或load_digits兩種範例資料集
輸出結果:
若要自行建立模擬訓練資料,可分為make_regression、make_classification、make_blobs三種類別,分別可生成適用於線性回歸類型任務的數據、適用於分類任務的平面數據與具有簇狀結構的數據。
n_samples為生成的數據點總數
n_features為每個樣本的特徵維度
n_informative為實際對目標有影響的特徵數量,其他特徵為冗餘或雜訊
n_targets 為輸出變數的數量,大於1時為多輸出回歸
noise 為添加到輸出的高斯雜訊的標準差
coef 若為True,則返回用於生成數據的真實係數
random_state 控制數據生成的隨機性,設定後可重現結果
n_redundant 為由資訊特徵線性組合產生的特徵數量
n_classes 為目標變數的不同類別數量
weights 為每個類別的樣本比例,預設為均等分佈
centers 可以是整數(簇數量)或數組(指定各簇中心坐標)
cluster_std 控制簇的分散程度,可以是單一值或每簇一個值的數組
shuffle 控制是否隨機排列生成的數據
輸出結果:
對於載入csv檔案,使用pandas中的read_csv可將csv檔案內容轉為dataframe格式可供查看或後續使用。
檔案讀取內容:
對於載入excel檔案,使用pandas中的read_excel可將excel檔案內容轉為dataframe格式可供查看或後續使用。
備註:除了pandas以外,還需要額外安裝openpyxl才可使用read_excel函數。
檔案讀取內容:
對於載入Google Sheet檔案,使用pandas中的read_csv可將檔案內容轉為dataframe格式可供查看或後續使用。
備註:通過在google sheet的網址後方加上`/export?format=csv `可將其改為下載地址,可供pandas讀取或直接下載檔案。
檔案讀取內容:
對於載入json檔案,使用pandas中的read_json可將檔案內容轉為dataframe格式可供查看或後續使用。
檔案讀取內容:
對於載入s3 bucket中的檔案,需要有AWS的存取金鑰,故需提前至AWS網頁中申請免費帳戶
在此頁面中選擇建立免費帳戶,填入基本資料建立帳戶成功後,即可進入下方主控台頁面。
於此頁面的左上方搜索處輸入IAM進入IAM儀表板
進入此頁面後,點選左方的`人員`選項,進入設定頁面
點選位於右上方的`建立人員`按鈕以建立新成員
建立完成後應如圖所示,有新的人員顯示於儀表板中
點選人員名稱,進入設定頁面,於右方的`存取金鑰1`下方,點選`建立存取金鑰`
於此頁面中選取`其他`,並依規定填入必須資訊建立金鑰,建立完成後按下下載csv金鑰,可於檔案中查看已建立的金鑰
於python程式碼中,透過pandas的read_csv方法,將金鑰讀取並設置為全域變數`ACCESS_KEY_ID`與`SECRECT_ACCESS_KEY`。
接下來就與讀取csv檔案一樣,使用read_csv讀取s3 bucket中的csv檔案內容,不過必須在其中加上參數storage_options,並於其中放入ACCESS_KEY_ID與SECRECT_ACCESS_KEY
檔案讀取內容: