1. 程式人生 > 其它 >python求矩陣特徵值_矩陣理論及其基本運算

python求矩陣特徵值_矩陣理論及其基本運算

技術標籤:python求矩陣特徵值

作為數學的一個重要分支,矩陣理論具有極為豐富的內容。作為一種基本的工具、矩陣理論在數學學科以及其它領域,如數值分析、最優化理論、概率統計、運籌學、圖論、資訊科學與技術、管理科學與工程等學科都有十分重要的應用。因此對於資料分析工作者來說,學習矩陣理論及其重要。

矩陣學習視訊教程:

6f62f38282d50955e9ac29bf63d90bdb.png

一、python中的矩陣運算

python的numpy庫提供矩陣運算的功能,因此我們在需要矩陣運算的時候,需要匯入numpy的matrix包。

1、matrix包的匯入

import numpy as npfrom numpy import matrix as mat

2、建立常見的矩陣

>>>data1=mat(zeros((3,3))) #建立一個3*3的零矩陣,矩陣這裡zeros函式的引數是一個tuple型別(3,3)>>> data1matrix([[ 0.,  0.,  0.],        [ 0.,  0.,  0.],        [ 0.,  0.,  0.]])>>>data2=mat(ones((2,4))) #建立一個2*4的1矩陣,預設是浮點型的資料,如果需要時int型別,可以使用dtype=int>>> data2matrix([[ 1.,  1.,  1.,  1.],        [ 1.,  1.,  1.,  1.]])>>>data3=mat(random.rand(2,2)) #這裡的random模組使用的是numpy中的random模組,random.rand(2,2)建立的是一個二維陣列,需要將其轉換成#matrix>>> data3matrix([[ 0.57341802,  0.51016034],        [ 0.56438599,  0.70515605]])>>>data4=mat(random.randint(10,size=(3,3))) #生成一個3*3的0-10之間的隨機整數矩陣,如果需要指定下界則可以多加一個引數>>> data4matrix([[9, 5, 6],        [3, 0, 4],        [6, 0, 7]])>>>data5=mat(random.randint(2,8,size=(2,5))) #產生一個2-8之間的隨機整數矩陣>>> data5matrix([[5, 4, 6, 3, 7],        [5, 3, 3, 4, 6]])>>>data6=mat(eye(2,2,dtype=int)) #產生一個2*2的對角矩陣>>> data6matrix([[1, 0],        [0, 1]])a1=[1,2,3]a2=mat(diag(a1)) #生成一個對角線為1、2、3的對角矩陣>>> a2matrix([[1, 0, 0],        [0, 2, 0],        [0, 0, 3]])

3、矩陣的基本運算

(1)、矩陣的乘法

>>>a1=mat([1,2]);      >>>a2=mat([[1],[2]]);>>>a3=a1*a2 #1*2的矩陣乘以2*1的矩陣,得到1*1的矩陣>>> a3matrix([[5]])

(2)矩陣求逆、轉置

#矩陣求逆>>a1=mat(eye(2,2)*0.5)>>> a1matrix([[ 0.5,  0. ],        [ 0. ,  0.5]])>>>a2=a1.I  #求矩陣matrix([[0.5,0],[0,0.5]])的逆矩陣>>> a2matrix([[ 2.,  0.],        [ 0.,  2.]])
#矩陣轉置>>> a1=mat([[1,1],[0,0]])>>> a1matrix([[1, 1],        [0, 0]])>>> a2=a1.T>>> a2matrix([[1, 0],        [1, 0]])

(3)求矩陣的特徵值和特徵向量

import numpy as np  A = np.mat("1 2 3; 2 3 4; 5 4 6")  #建立矩陣print("A\n", A)  inverse = np.linalg.inv(A)print("inverse\n", inverse) eigenvalues = np.linalg.eigvals(A) #單純的求解矩陣的特徵值print("eigenvalues: ", eigenvalues) eigenvalues, eigenvectors = np.linalg.eig(A)print("eigenvalues: ", eigenvalues)   #特徵值print("eigenvectors: ", eigenvectors) #特徵向量

三、總結

矩陣在實際資料探勘中具有重要的應用意義,在資料探勘中,就會直接用特徵值來描述對應特徵向量方向上包含的資訊量,而某一特徵值除以所有特徵值的和的值就為:該特徵向量的方差貢獻率(方差貢獻率代表了該維度下蘊含的資訊量的比例)。

通常經過特徵向量變換下的資料被稱為變數的主成分,當前m個主成分累計的方差貢獻率達到一個較高的百分數(如85%以上)的話,就保留著這m個主成分的資料。實現了對資料進行降維的目的。整個主成分分析的演算法(PCA)原理就是應用了矩陣特徵值、特徵向量的理論。