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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

熵权法计算权重原理python实现

發布時間:2023/12/31 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熵权法计算权重原理python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

信息熵越大,信息量到底是越大還是越小?權重和信息熵的大小到底是正相關還是負相關?
網上有一些相反的說法。
有些說:熵越大,方差越大,包含的信息越多,權重越大。
另一些說:熵越小,不確定性越小,提供的信息越大,權重越大。
今天復盤一下熵權法計算權重的原理,并python實現。

文章目錄

  • 熵權法計算權重原理
    • 信息熵計算
    • 熵權法計算
    • 熵權悖論的解釋
  • Python實現信息熵求權重

熵權法計算權重原理

信息熵計算

熵是對混亂程度的一種度量。混亂程度越大,熵就越大,包含的信息量越大;混亂程度越小,熵就越小,包含的信息量就越小。

計算公式:

這里的p是指標 j 中值為 i 的樣本數占總樣本數量的比例
比如,共有2個樣本,當指標 j 取值分別為0,1,那么p(j=0)=1/2,p(j=1)=1/2,帶入公式可得e=1。
當2個樣本取值分別為1/2,1/2時,p只有一個,p(j=1/2)=1,帶入公式得e=0。
由此可知,方差越大,熵越大,包含的信息越多,權重應當越大。
那么,為什么會有一些地方說,熵越小,信息量越大,權重越大呢?

熵權法計算

這個問題要從熵權法計算權重的公式說起:

  • 歸一化
    對于不同量綱的指標比較信息熵顯然沒有意義,需要先進行歸一化。
    同時,需要對負向指標正向化處理,處理后的指標均為正向指標。

  • 計算熵值

    需要注意的是,這里的p不再是每個取值的數量所占的比例,而是該取值的大小除以該指標所有取值的總和
    比如,共有2個樣本,當指標 j 取值分別為0,1,那么p1=0/(0+1),p2=1/(0+1),帶入公式可得e=0。
    當2個樣本取值分別為1/2,1/2時,p1=1/2/(1/2+1/2)=1/2,p2=1/2/(1/2+1/2),帶入公式可得e=1。

  • 計算信息熵冗余度(差異):

  • 計算各項指標的權重:

  • 計算各樣本的綜合得分:

    注意,這里的xij是歸一化后的取值,即第一步的結果。

  • 熵權悖論的解釋

    由此可知,權重與信息熵冗余度d正相關,與信息熵e是負相關的。也就是說,方差越大,熵越小,包含的信息越多,權重應當越大
    這里與前面的結論相悖的原因就在于熵權法計算熵的公式中,p不是各取值的比例,而是各個取值的相對大小。公式不一樣,結論自然不一樣了。

    Python實現信息熵求權重

    import pandas as pd import numpy as np import mathdef nml(series): # 正向指標歸一化 減最小值的min-max方法l = []for i in series:l.append((i - series.min()) / (series.max() - series.min()))return pd.Series(l, name=series.name)def nml_max(series): #負向指標歸一化l = []for i in series:l.append((series.max() - i) / (series.max() - series.min()))return pd.Series(l, name=series.name)def nmlzt(df): #歸一化函數,對正負向指標分別調用nml()和nml_max()dfn = pd.DataFrame()for i in df.columns:if (i=='D'):dfn = pd.concat([dfn, nml_max(df[i])], axis=1)else:dfn = pd.concat([dfn, nml(df[i])], axis=1)# dfn為歸一化的數據return dfndef pij(df): #求信息熵公式中的p,這里直接用取值除以取值總和,而不是數量的比例D = df.copy()for i in range(D.shape[1]): # 列sum = D.iloc[:, i].sum()for j in range(D.shape[0]): # 行D.iloc[j, i] = D.iloc[j, i] / sum# 算pijreturn Ddef entropy(series): #計算信息熵_len = len(series)def ln(x):if x > 0:return math.log(x)else:return 0s = 0for i in series:s += i * ln(i)return -(1 / ln(_len)) * sdef _result(dfij): #求e、d、w并返回dfn = dfij.copy()w = pd.DataFrame(index=dfn.columns, dtype='float64')l = []for i in dfn.columns:l.append(entropy(dfn[i]))w['熵'] = lw['差異性系數'] = 1 - np.array(l)sum = w['差異性系數'].sum()l = []for i in w['差異性系數']:l.append(i / sum)w['權重'] = lreturn wdf = pd.read_csv('Blues_D.csv') #讀取你需要計算的文件 df=df[['D','GTI']] #選取需要計算的屬性列 dfn = nmlzt(df) #歸一化 dfij = pij(dfn) #求p w = _result(dfij) #求權重 w.to_excel('weight_info_entropy.xlsx', sheet_name='權重')#輸出結果 dfn = dfn.set_index(df.index, drop=True) print(dfn)

    總結

    以上是生活随笔為你收集整理的熵权法计算权重原理python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 空姐毛片 | 日本欧美另类 | 欧美色图19p | 五月婷婷激情综合 | 日韩一二在线 | 制服丝袜在线一区 | 国产成人无码一二三区视频 | 强迫凌虐淫辱の牝奴在线观看 | 国产麻豆免费视频 | 毛片视频大全 | 69av网| 久久午夜影院 | 青草国产| www.999热| 久久久久久av无码免费网站 | 日本女人一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 朝桐光一区二区三区 | 欧美xxxⅹ性欧美大片 | 亚洲爽妇网 | www.激情五月 | 久久精品3 | 日本在线免费观看视频 | 成人免费视频网站 | 日本天堂网 | 中国一级片黄色一级片黄 | 日本久久久久久 | 黄色三极片 | 亚洲高清福利 | 午夜888| 成年人网站av | 水蜜桃色314在线观看 | 久久精品在线观看 | 久草在在线| 亚欧在线观看 | 善良的老师伦理bd中字 | 韩国三级在线播放 | 福利亚洲 | 欧美日韩国产综合网 | 毛片网站免费在线观看 | 爱情岛论坛永久入口 | 99久久精品国产一区二区三区 | 秋霞综合网 | 男人插入女人下面的视频 | 国产一区二区精华 | 福利久久久 | 天躁夜夜躁狼狠躁 | 伊人狠狠操 | 欧洲久久久久久 | 国产一区日韩精品 | 青青草视频在线看 | 成年人91视频 | 久久久久久久久久久久久女国产乱 | 九一国产视频 | 欧美成年人视频在线观看 | 日韩一区二区免费在线观看 | 日韩精品tv| 日本久久久久 | 成人免费看片又大又黄 | 91精品人妻一区二区三区蜜桃2 | 中文字幕免费视频 | 天天天操操操 | 精品一区不卡 | 四虎在线影院 | av合集| 中国字幕一色哟哟 | 成人免费看片39 | 天天做天天爱 | 白丝开裆喷水 | 国产精品理论片 | 在线欧美激情 | 欧美综合日韩 | 日韩福利视频在线观看 | 欧美成人精品欧美一级乱黄 | 色婷婷18 | 亚洲一区二区三 | 一个色在线 | 日韩污污 | 男女男网站 | 一级黄色免费大片 | 美国免费高清电影在线观看 | 久久久国产一区 | 亚洲免费福利视频 | 动漫av网站 | 人人人人干 | 欧美日韩午夜激情 | 日本丰满熟妇videossex一 | 四虎最新站名点击进入 | 日本japanese乳偷乱熟 | 国产在线看 | 国产一区在线免费 | 69视频网站 | 国产麻豆午夜三级精品 | 国产免费黄色小视频 | 亚洲国产欧美视频 | www.九九九 | 91caob| 57pao成人国产永久免费视频 | 俺也去综合 |