日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

层次分析法之python

發(fā)布時(shí)間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 层次分析法之python 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

1.簡(jiǎn)介

2.算法解析

3.實(shí)例分析

3.1 構(gòu)造矩陣

3.2 查看行數(shù)和列數(shù)

3.3 求特征向量

3.4 找到最大特征值和最大特征向量

3.5 計(jì)算權(quán)重

3.6 一致性檢驗(yàn)

3.7 計(jì)算評(píng)分

完整代碼


1.簡(jiǎn)介

? ? ? ? 一種主觀賦權(quán)的方法,在數(shù)據(jù)集比較小,實(shí)在不好比較的時(shí)候可以用這個(gè)方法,如果有別的選擇還是盡量不要用這個(gè)算法比較好。

????????層次分析法的特點(diǎn)是在對(duì)復(fù)雜的決策問(wèn)題的本質(zhì)、影響因素及其內(nèi)在關(guān)系等進(jìn)行深入分析的基礎(chǔ)上,利用較少的定量信息使決策的思維過(guò)程數(shù)學(xué)化,從而為多目標(biāo)、多準(zhǔn)則或無(wú)結(jié)構(gòu)特性的復(fù)雜決策問(wèn)題提供簡(jiǎn)便的決策方法。尤其適合于對(duì)決策結(jié)果難于直接準(zhǔn)確計(jì)量的場(chǎng)合。

????????層次分析法是將決策問(wèn)題按總目標(biāo)、各層子目標(biāo)、評(píng)價(jià)準(zhǔn)則直至具體的備投方案的順序分解為不同的層次結(jié)構(gòu),然后得用求解判斷矩陣特征向量的辦法,求得每一層次的各元素對(duì)上一層次某元素的優(yōu)先權(quán)重,最后再加權(quán)和的方法遞階歸并各備擇方案對(duì)總目標(biāo)的最終權(quán)重,此最終權(quán)重最大者即為最優(yōu)方案。這里所謂“優(yōu)先權(quán)重”是一種相對(duì)的量度,它表明各備擇方案在某一特點(diǎn)的評(píng)價(jià)準(zhǔn)則或子目標(biāo),標(biāo)下優(yōu)越程度的相對(duì)量度,以及各子目標(biāo)對(duì)上一層目標(biāo)而言重要程度的相對(duì)量度。層次分析法比較適合于具有分層交錯(cuò)評(píng)價(jià)指標(biāo)的目標(biāo)系統(tǒng),而且目標(biāo)值又難于定量描述的決策問(wèn)題。其用法是構(gòu)造判斷矩陣,求出其最大特征值。及其所對(duì)應(yīng)的特征向量W,歸一化后,即為某一層次指標(biāo)對(duì)于上一層次某相關(guān)指標(biāo)的相對(duì)重要性權(quán)值。

2.算法解析

例如某研究對(duì)象的指標(biāo)集

然后通過(guò)以下表格復(fù)制指標(biāo)n對(duì)指標(biāo)m的重要性

判斷矩陣匯總指標(biāo)n對(duì)指標(biāo)m滿足公式

然后通過(guò)eig函數(shù)求取矩陣的特征向量

一致性檢驗(yàn)

其中RI根據(jù)指標(biāo)個(gè)數(shù)通過(guò)下表選擇對(duì)應(yīng)的RI值

如果CR<0.10時(shí),則建立的判斷矩陣的一致性認(rèn)為是可接受的,否則應(yīng)對(duì)其進(jìn)行修正。

3.實(shí)例分析

????????小美要選男朋友了,現(xiàn)有小明、小李兩個(gè)人選,到底該選誰(shuí)呢?現(xiàn)在小美要從四個(gè)指標(biāo)去選擇,分別是身高、顏值、學(xué)歷、性格。小美對(duì)他們各個(gè)指標(biāo)的評(píng)分如下:

由于兩者各有其優(yōu)點(diǎn),實(shí)在令人難以抉擇,于是小美根據(jù)自己的主觀判斷,認(rèn)為如下:

  • 1.身高與顏值比較,身高稍重要
  • 2.身高與學(xué)歷相比,同樣重要
  • 3.身高和性格相比,性格稍重要
  • 4.顏值和學(xué)歷相比,學(xué)歷介于相同重要和稍微重要之間
  • 5.顏值和性格相比,性格明顯重要
  • 6.性格和學(xué)歷相比,性格稍重
身高顏值學(xué)歷性格
身高1311/3
顏值1/311/21/5
學(xué)歷1211/3
性格3531

由此,可得到判斷矩陣

3.1 構(gòu)造矩陣

p = np.mat('8 7 6 8;7 8 8 7') #每一行代表一個(gè)對(duì)象的指標(biāo)評(píng)分 print(p) #A為自己構(gòu)造的輸入判別矩陣 A = np.array([[1,3,1,1/3],[1/3,1,1/2,1/5],[1,2,1,1/3],[3,5,3,1]]) print(A)

返回:

3.2 查看行數(shù)和列數(shù)

#查看行數(shù)和列數(shù) [m,n] = A.shape print(m,n)

返回:

3.3 求特征向量

#求特征值和特征向量 V,D = np.linalg.eig(A) print('特征值:') print(V) print('特征向量:') print(D)

返回:

3.4 找到最大特征值和最大特征向量

#最大特征值 tzz = np.max(V) print(tzz) #最大特征向量 k=[i for i in range(len(V)) if V[i] == np.max(V)] tzx = -D[:,k] print(tzx)

返回:

3.5 計(jì)算權(quán)重

# #賦權(quán)重 quan=np.zeros((n,1)) for i in range(0,n):quan[i]=tzx[i]/np.sum(tzx) Q=quan print(Q)

返回:

3.6 一致性檢驗(yàn)

#一致性檢驗(yàn) CI=(tzz-n)/(n-1) RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59] #判斷是否通過(guò)一致性檢驗(yàn) CR=CI/RI[n-1] if CR>=0.1:print('沒(méi)有通過(guò)一致性檢驗(yàn)\n') else:print('通過(guò)一致性檢驗(yàn)\n')

返回:

3.7 計(jì)算評(píng)分

#顯示出所有評(píng)分對(duì)象的評(píng)分值 score=p*Q for i in range(len(score)):print('object_score {}:'.format(i),float(score[i]))

返回:

完整代碼

#導(dǎo)入相關(guān)庫(kù) import numpy as np import pandas as pd p = np.mat('8 7 6 8;7 8 8 7') #每一行代表一個(gè)對(duì)象的指標(biāo)評(píng)分 #A為自己構(gòu)造的輸入判別矩陣 A = np.array([[1,3,1,1/3],[1/3,1,1/2,1/5],[1,2,1,1/3],[3,5,3,1]]) #查看行數(shù)和列數(shù) [m,n] = A.shape#求特征值和特征向量 V,D = np.linalg.eig(A) print('特征值:') print(V) print('特征向量:') print(D) #最大特征值 tzz = np.max(V) # print(tzz) #最大特征向量 k=[i for i in range(len(V)) if V[i] == np.max(V)] tzx = -D[:,k] # print(tzx)# #賦權(quán)重 quan=np.zeros((n,1)) for i in range(0,n):quan[i]=tzx[i]/np.sum(tzx) Q=quan # print(Q)#一致性檢驗(yàn) CI=(tzz-n)/(n-1) RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59] #判斷是否通過(guò)一致性檢驗(yàn) CR=CI/RI[n-1] if CR>=0.1:print('沒(méi)有通過(guò)一致性檢驗(yàn)\n') else:print('通過(guò)一致性檢驗(yàn)\n')#顯示出所有評(píng)分對(duì)象的評(píng)分值 score=p*Q for i in range(len(score)):print('object_score {}:'.format(i),float(score[i]))

總結(jié)

以上是生活随笔為你收集整理的层次分析法之python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。