經過不斷的使用與進化,Python産生了不少專門用于機器學習的程式庫,我們在機器學習中經常需要用到的一些程式庫,包括科學計算包(Numpy)、資料分析工具(Pandas)、數值計算包(Scipy)、繪圖工具庫(Matplotlib)、機器學習包(Scikit-learn)等,涵蓋了在機器學習中資料導入、整理、資料處理、可視化、數值計算以及算法運作等方面。 通過掌握以上基本的程式庫的應用,可以極大簡化對資料的處理過程。
科學計算包(Numpy)
Numpy的核心是數組(Arrays),具體來說是多元數組(Ndarrays);Numpy就是對這些數組進行建立、删除、運算等操作的一個程式包。
數組即一組資料,它把一系列具有相同類型的資料組織在一起,成為一個可操作的整體,但是兩個數組内部的資料類型是不同的。
Numpy的一個特點是把資料轉換成數組(向量或矩陣)形式處理或運算。
1、建立數組
np.array( ) 建立數組
np.arange( ) 建立等差數列
np.linspace( ) 建立指定範圍内均勻分布的數組
np.ones( ) 建立元素都是1的數組
np.zeros( ) 建立元素都是0的數組
np.eye( ) 建立對角矩陣
np.random.random( ) 建立随機數組
2、檢視數組的屬性
.shape 數組的次元
.dtype 數組的資料類型
.size 數組的元素個數
3、數組索引
arr[3] 擷取數組中某個元素
arr[3:5] 切片
4、數組的統計分析
np.sort() 函數 對數組進行排序
np.sum()函數 對數組進行求和
np.mean()函數 對數組求均值
np.std()函數 對數組求标準差
5、數組的矩陣操作
np.mat("1 3 4;5 7 9; 3 5 6") mat()函數建立矩陣
np.dot(arr,arr1) dot( )函數進行矩陣相乘
-
建立數組np.array
import numpy as np #導入Numpy庫 array=np.array([1,2,3,4]) #建立一維數組 print(array) #列印數組 array2=np.array([[2,4,6,7],[3,9,7,0],[2,8,5,9]]) #建立二維數組 print(array2) #列印數組
[1 2 3 4] [[2 4 6 7] [3 9 7 0] [2 8 5 9]]
-
檢視array數組的屬性
print('數組次元為:',array2.shape) #檢視數組結構 print('數組的資料類型為:',array2.dtype) #檢視數組的資料類型 print('數組元素個數為:',array2.size) #檢視數組元素個數
數組次元為: (3, 4) 數組的資料類型為: int32 數組元素個數為: 12
-
建立數組的其他方式
print(np.arange(8)) #np.arange()建立等差數列 print(np.linspace(0,6,4)) #np.linspace()指定範圍内均勻分布的數組 print(np.zeros((2,3))) #np.zeros()元素都是0的數組,2x3的矩陣 print(np.ones((2,8))) #np.ones()元素都是1的數組,2x8的矩陣 print(np.eye(3)) #建立對角矩陣 print(np.random.random(8)) #建立元素數為8的随機數組
[0 1 2 3 4 5 6 7] [0. 2. 4. 6.] [[0. 0. 0.] [0. 0. 0.]] [[1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.]] [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] [0.88169518 0.48534047 0.03996798 0.86128575 0.58678112 0.48859591 0.5996858 0.7072107 ]
-
基礎的資料運算
arr=np.array(np.arange(10)) #建立0-9之間的等差資料 arr1=np.array(np.arange(1,11)) #建立1-10之間的等差資料 print(arr*2) #數組乘法 print(arr+arr1) #數組加法
[ 0 2 4 6 8 10 12 14 16 18] [ 1 3 5 7 9 11 13 15 17 19]
-
數組索引
arr=np.arange(10) print(arr[6]) #擷取數組中的第6個數 print(arr[2:5]) #擷取某個範圍的元素,第3、4、5個元素 arr[3:5]=111,112 #改變第4個元素為111,第5個元素為112 print(arr) arr1=np.array([[1,2,3,4],[1,4,5,6],[3,5,6,7]]) #建立多元數組 print(arr1) print(arr1[0,1:3])
6 [2 3 4] [ 0 1 2 111 112 5 6 7 8 9] [[1 2 3 4] [1 4 5 6] [3 5 6 7]] [2 3]
-
數組的統計分析
arr=np.array([2,5,6,8,3]) print(arr) print(np.sort(arr)) #sort()函數對數組進行排序 print(np.sum(arr)) #sum()函數對數組進行求和 print(np.mean(arr)) #mean()函數對數組求均值 print(np.std(arr)) #std()函數對數組求标準差
[2 5 6 8 3] [2 3 5 6 8] 24 4.8 2.1354156504062622
-
數組的矩陣操作
arr=np.arange(3) matr1=np.mat("1 4 5;3 5 6;3 7 9") #使用mat()函數建立矩陣 print(arr) print(matr1) print(np.dot(arr,matr1)) #使用dot()函數進行arr和matr1矩陣之間的相乘
[0 1 2] [[1 4 5] [3 5 6] [3 7 9]] [[ 9 19 24]]