pandas實現層次分析法

2021-10-22 09:09:29 字數 1774 閱讀 5643

使用到了特徵向量的和積法求出了數值解,避免了使用numpy自帶函式產生複數解的缺點。因為在大部分情況下,決策者得到的判斷矩陣都不是對稱的,必然會執行出複數解。

算例使用的是《決策理論和方法》的例5-2。

step1,計算總矩陣的特徵向量,最大特徵值和一致性檢驗。

step2,五個子方案的特徵向量,最大特徵值和一致性檢驗。將父子判斷矩陣分別錄入excel,使用函式呼叫不同的sheet頁**。

step3,一致性檢驗,如何小於給定閾值,就返回true。

完整**如下。

import pandas as pd#ahp方法實現

import numpy as np

import myio

np.set_printoptions(suppress=

true

)def

elga

(df)

:#和積法求近似解的特徵值特徵向量

df1=df/df.

sum(

) df2 = df1.

sum(1)

df3 = df2/

sum(df2)

df4 =np.dot(df,df3)

df5 = df4/

(len

(df3)

*df3)

return df3,df5.

sum(

)def

test

(lamda,n)

: ci =

(lamda-n)

/(n-1)

print

('ci '

,ci)

cr = ci/ri[n]

print

('cr '

,cr)

if cr<

0.1:

return

true

if __name__ ==

'__main__'

: ri = pd.series(

[0.58

,0.9

,1.12

,1.24

,1.32

,1.41

,1.45

], index=[3

,4,5

,6,7

,8,9

])url=

'd:\study\\test\data\\t7.xlsx'

df1= myio.getdef(url,0)

df2,df3=elga(df1)

print

('總方案矩陣為\n'

,df1)

print

('總方案的特徵向量為\n'

,df2)

print

('最大特徵值為\n'

,df3)

print

('是否滿足一致性檢驗\n'

,test(df3,5)

)for i in

range(1

,6):

df4= myio.getdef(url,i)

df5,df6= elga(df4)

print

('子方案矩陣為\n'

, df4)

print

('子方案的特徵向量為\n'

,df5)

print

('最大特徵值為\n'

,df6)

print

('是否滿足一致性檢驗'

,test(df6,3)

)

github倉庫在

層次分析法

ahp分析方法,其基本步驟可歸納為 1 建立遞階層次結構 建立遞階層次結構是ahp法中關鍵一步,如圖所示。首先,把複雜問題中所包含的因素分解為不同層次。同一層次的因素作為準則對下一層次的某些因素起支配作用,同時,它又受上乙個層次因素的支配。這種從上到下的支配關係形成了乙個遞階層次結構,處於最上層的是...

層次分析法

此方法的步驟 1.建立有目標層 準則層 方案層等構成的層次結構 2.構造下層各元素對上層每一元素的成對比較矩陣 3.計算各個成對比較矩陣的特徵根和特徵向量,做一致性檢驗,通過後將特徵向量取做權向量 4.用分層加權和法計算最下層元素對最上層元素的權重 即逐層矩陣相乘 關於一致性檢驗,n階成對比較矩陣的...

層次分析法

層次分析法是對難以完全定量的複雜系統作出決策的模型和方法。層次分析法的結構如下。建立層次結構模型 構造判別矩陣 正反交矩陣 層次單排序及其一致性檢驗 層次總排序及其一致性檢驗 這裡使用乙個例子,比如我們的目標是選出學校附近最好的餐館,這裡我們就會考慮每個餐館的衛生 口味 服務這個幾個方面,而候選的餐...