吳裕雄 python 熵權法確定特征權重


一、熵權法介紹

    熵最先由申農引入信息論,目前已經在工程技術、社會經濟等領域得到了非常廣泛的應用。

    熵權法的基本思路是根據各個特征和它對應的值的變異性的大小來確定客觀權重。

    一般來說,若某個特征的信息熵指標權重確定方法之熵權法越小,表明該特征的值得變異(對整體的影響)程度越大,提供的信息量越多,在綜合評價中所能起到

的作用也越大,其權重也就越大。相反,某個特征的信息熵越大,表明指標值得變異(對整體的影響)程度越小,提供的信息量也越少,

在綜合評價中所起到的作用也越小,其權重也就越小。

二、熵權法賦權步驟

1. 數據標准化(數據歸一化)

將各個指標的數據進行標准化(歸一化)處理。

假設給定了k個特征指標權重確定方法之熵權法,其中指標權重確定方法之熵權法(每個特征的值表示)。假設對各特征數據(值)標准化后的值為指標權重確定方法之熵權法,那么指標權重確定方法之熵權法

i 表示特征序列,j 表示 i 特征序列對應的各個具體的值的序列,所謂的序列就是起到標號的作用,方便人們理解公式的運行過程。

2. 求各指標的信息熵

根據信息論中信息熵的定義,一組數據的信息熵指標權重確定方法之熵權法。其中指標權重確定方法之熵權法,如果指標權重確定方法之熵權法,則定義指標權重確定方法之熵權法

3. 確定各指標權重

根據信息熵的計算公式,計算出各個特征的信息熵為指標權重確定方法之熵權法 。通過信息熵計算各指標的權重:指標權重確定方法之熵權法 。

4. 對各個特征進行評分

根據計算出的指標權重,設Zl為第l個特征的最終得分,則 指標權重確定方法之熵權法

import xlrd
import numpy as np

#讀數據並求熵
path=u"D:\\LearningResource\\myLearningData\\hostital.xls"
hn,nc=1,1
#hn為表頭行數,nc為表頭列數
sheetname=u'Sheet1'

def readexcel(hn,nc):
    data = xlrd.open_workbook(path)
    table = data.sheet_by_name(sheetname)
    nrows = table.nrows
    data=[]
    for i in range(hn,nrows):
        data.append(table.row_values(i)[nc:])
    return np.array(data)

def entropy(data0):
    #返回每個樣本的指數
    #樣本數,指標個數
    n,m=np.shape(data0)
    #一行一個樣本,一列一個指標
    #下面是歸一化
    maxium=np.max(data0,axis=0)
    minium=np.min(data0,axis=0)
    data= (data0-minium)*1.0/(maxium-minium)
    ##計算第j項指標,第i個樣本占該指標的比重
    sumzb=np.sum(data,axis=0)
    data=data/sumzb
    #對ln0處理
    a=data*1.0
    a[np.where(data==0)]=0.0001
#    #計算每個指標的熵
    e=(-1.0/np.log(n))*np.sum(data*np.log(a),axis=0)
    print(e)
#    #計算權重
    w=(1-e)/np.sum(1-e)
    recodes=np.sum(data0*w,axis=1)
    return recodes

data=readexcel(hn,nc)
grades=entropy(data)
print(grades)

原數據集

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM