熵python
⑴ python里怎麼計算信息增益,信息增益比,基尼指數
1、首先自定義一份數據,分別計算信息熵,條件信息熵,從而計算信息增益。
⑵ 求python 熵值法實現代碼
一、基本原理
在資訊理論中,熵是對不確定性的一種度量。信息量越大,不確定性就越小,熵也就越小;信息量越小,不確定性越大,熵也越大。
根據熵的特性,可以通過計算熵值來判斷一個事件的隨機性及無序程度,也可以用熵值來判斷某個指標的離散程度,指標的離散程度越大,該指標對綜合評價的影響(權重)越大,其熵值越小。
二、熵值法步驟
1. 選取n個國家,m個指標,則為第i個國家的第j個指標的數值(i=1, 2…, n; j=1,2,…, m);
2. 指標的歸一化處理:異質指標同質化
由於各項指標的計量單位並不統一,因此在用它們計算綜合指標前,先要對它們進行標准化處理,即把指標的絕對值轉化為相對值,並令,從而解決各項不同質指標值的同質化問題。而且,由於正向指標和負向指標數值代表的含義不同(正向指標數值越高越好,負向指標數值越低越好),因此,對於高低指標我們用不同的演算法進行數據標准化處理。其具體方法如下:
正向指標:
負向指標:
則為第i個國家的第j個指標的數值(i=1, 2…, n; j=1, 2,…, m)。為了方便起見,歸一化後的數據仍記為;
3. 計算第j項指標下第i個國家占該指標的比重:
4. 計算第j項指標的熵值:
其中. 滿足;
5. 計算信息熵冗餘度:
6. 計算各項指標的權值:
7. 計算各國家的綜合得分:
[code]function [s,w]=shang(x)
% 函數shang.m, 實現用熵值法求各指標(列)的權重及各數據行的得分
% x為原始數據矩陣, 一行代表一個國家, 每列對應一個指標
% s返回各行得分, w返回各列權重
[n,m]=size(x); % n=23個國家, m=5個指標
%% 數據的歸一化處理
% Matlab2010b,2011a,b版本都有bug,需如下處理. 其它版本直接用[X,ps]=mapminmax(x',0,1);即可
[X,ps]=mapminmax(x');
ps.ymin=0.002; % 歸一化後的最小值
ps.ymax=0.996; % 歸一化後的最大值
ps.yrange=ps.ymax-ps.ymin; % 歸一化後的極差,若不調整該值, 則逆運算會出錯
X=mapminmax(x',ps);
% mapminmax('reverse',xx,ps); % 反歸一化, 回到原數據
X=X'; % X為歸一化後的數據, 23行(國家), 5列(指標)
%% 計算第j個指標下,第i個記錄占該指標的比重p(i,j)
for i=1:n
for j=1:m
p(i,j)=X(i,j)/sum(X(:,j));
end
end
%% 計算第j個指標的熵值e(j)
k=1/log(n);
for j=1:m
e(j)=-k*sum(p(:,j).*log(p(:,j)));
end
d=ones(1,m)-e; % 計算信息熵冗餘度
w=d./sum(d); % 求權值w
s=w*p'; % 求綜合得分[\code]
測試程序:
data.txt 數據如下:
114.6 1.1 0.71 85.0 346
55.3 0.96 0.4 69.0 300
132.4 0.97 0.54 73.0 410
152.1 1.04 0.49 77.0 433
103.5 0.96 0.66 67.0 385
81.0 1.08 0.54 96.0 336
179.3 0.88 0.59 89.0 446
29.8 0.83 0.49 120.0 289
92.7 1.15 0.44 154.0 300
248.6 0.79 0.5 147.0 483
115.0 0.74 0.65 252.0 453
64.9 0.59 0.5 167.0 402
163.6 0.85 0.58 220.0 495
95.7 1.02 0.48 160.0 384
139.5 0.70 0.59 217.0 478
89.9 0.96 0.39 105.0 314
76.7 0.95 0.51 162.0 341
121.8 0.83 0.60 140.0 401
42.1 1.08 0.47 110.0 326
78.5 0.89 0.44 94.0 280
77.8 1.19 0.57 91.0 364
90.0 0.95 0.43 89.0 301
100.6 0.82 0.59 83.0 456
執行代碼:
[code]x=load('data.txt'); % 讀入數據
[s,w]=shang(x)[\code]
運行結果:
s =
Columns 1 through 9
0.0431 0.0103 0.0371 0.0404 0.0369 0.0322 0.0507 0.0229 0.0397
Columns 10 through 18
0.0693 0.0878 0.0466 0.0860 0.0503 0.0800 0.0234 0.0456 0.0536
Columns 19 through 23
0.0272 0.0181 0.0364 0.0202 0.0420
w =
0.1660 0.0981 0.1757 0.3348 0.2254
⑶ python中有哪些簡單的演算法
首先謝謝邀請,
python中有的演算法還是比較多的?
python之所以火是因為人工智慧的發展,人工智慧的發展離不開演算法!
感覺有本書比較適合你,不過可惜的是這本書沒有電子版,只有紙質的。
這本書對於演算法從基本的入門到實現,循序漸進的介紹,比如裡面就涵蓋了數學建模的常用演算法。
第 1章從數學建模到人工智慧
1.1數學建模1.1.1數學建模與人工智慧1.1.2數學建模中的常見問題1.2人工智慧下的數學1.2.1統計量1.2.2矩陣概念及運算1.2.3概率論與數理統計1.2.4高等數學——導數、微分、不定積分、定積分
第2章 Python快速入門
2.1安裝Python2.1.1Python安裝步驟2.1.2IDE的選擇2.2Python基本操作2.2.1第 一個小程序2.2.2注釋與格式化輸出2.2.3列表、元組、字典2.2.4條件語句與循環語句2.2.5break、continue、pass2.3Python高級操作2.3.1lambda2.3.2map2.3.3filter
第3章Python科學計算庫NumPy
3.1NumPy簡介與安裝3.1.1NumPy簡介3.1.2NumPy安裝3.2基本操作3.2.1初識NumPy3.2.2NumPy數組類型3.2.3NumPy創建數組3.2.4索引與切片3.2.5矩陣合並與分割3.2.6矩陣運算與線性代數3.2.7NumPy的廣播機制3.2.8NumPy統計函數3.2.9NumPy排序、搜索3.2.10NumPy數據的保存
第4章常用科學計算模塊快速入門
4.1Pandas科學計算庫4.1.1初識Pandas4.1.2Pandas基本操作4.2Matplotlib可視化圖庫4.2.1初識Matplotlib4.2.2Matplotlib基本操作4.2.3Matplotlib繪圖案例4.3SciPy科學計算庫4.3.1初識SciPy4.3.2SciPy基本操作4.3.3SciPy圖像處理案例第5章Python網路爬蟲5.1爬蟲基礎5.1.1初識爬蟲5.1.2網路爬蟲的演算法5.2爬蟲入門實戰5.2.1調用API5.2.2爬蟲實戰5.3爬蟲進階—高效率爬蟲5.3.1多進程5.3.2多線程5.3.3協程5.3.4小結
第6章Python數據存儲
6.1關系型資料庫MySQL6.1.1初識MySQL6.1.2Python操作MySQL6.2NoSQL之MongoDB6.2.1初識NoSQL6.2.2Python操作MongoDB6.3本章小結6.3.1資料庫基本理論6.3.2資料庫結合6.3.3結束語
第7章Python數據分析
7.1數據獲取7.1.1從鍵盤獲取數據7.1.2文件的讀取與寫入7.1.3Pandas讀寫操作7.2數據分析案例7.2.1普查數據統計分析案例7.2.2小結
第8章自然語言處理
8.1Jieba分詞基礎8.1.1Jieba中文分詞8.1.2Jieba分詞的3種模式8.1.3標注詞性與添加定義詞8.2關鍵詞提取8.2.1TF-IDF關鍵詞提取8.2.2TextRank關鍵詞提取8.3word2vec介紹8.3.1word2vec基礎原理簡介8.3.2word2vec訓練模型8.3.3基於gensim的word2vec實戰
第9章從回歸分析到演算法基礎
9.1回歸分析簡介9.1.1「回歸」一詞的來源9.1.2回歸與相關9.1.3回歸模型的劃分與應用9.2線性回歸分析實戰9.2.1線性回歸的建立與求解9.2.2Python求解回歸模型案例9.2.3檢驗、預測與控制
第10章 從K-Means聚類看演算法調參
10.1K-Means基本概述10.1.1K-Means簡介10.1.2目標函數10.1.3演算法流程10.1.4演算法優缺點分析10.2K-Means實戰
第11章 從決策樹看演算法升級
11.1決策樹基本簡介11.2經典演算法介紹11.2.1信息熵11.2.2信息增益11.2.3信息增益率11.2.4基尼系數11.2.5小結11.3決策樹實戰11.3.1決策樹回歸11.3.2決策樹的分類
第12章 從樸素貝葉斯看演算法多變193
12.1樸素貝葉斯簡介12.1.1認識樸素貝葉斯12.1.2樸素貝葉斯分類的工作過程12.1.3樸素貝葉斯演算法的優缺點12.23種樸素貝葉斯實戰
第13章 從推薦系統看演算法場景
13.1推薦系統簡介13.1.1推薦系統的發展13.1.2協同過濾13.2基於文本的推薦13.2.1標簽與知識圖譜推薦案例13.2.2小結
第14章 從TensorFlow開啟深度學習之旅
14.1初識TensorFlow14.1.1什麼是TensorFlow14.1.2安裝TensorFlow14.1.3TensorFlow基本概念與原理14.2TensorFlow數據結構14.2.1階14.2.2形狀14.2.3數據類型14.3生成數據十二法14.3.1生成Tensor14.3.2生成序列14.3.3生成隨機數14.4TensorFlow實戰
希望對你有幫助!!!
貴在堅持,自己掌握一些,在工作中不斷打磨,高薪不是夢!!
⑷ 提取顏色特徵並計算熵,使用python實現
正好學到這,練下手。比較晚了,所以寫的比較簡單,不明白了明天再說
⑸ python怎麼樣好學嗎
謝謝邀請,學習選擇很重要!!!
從未接觸過編程,首先應該選擇一門語言那麼我推薦python
學習重要是選對方法!!!
python之所以火是因為人工智慧的發展,個人整理學習經驗僅供參考!
感覺有本書《Python3破冰人工智慧從入門到實戰》你學的差不多了就基本具備了一名合格的python編程工程師,不過可惜的是這本書沒有電子版,只有紙質的。
第 1章從數學建模到人工智慧
1.1數學建模
1.1.1數學建模與人工智慧1.1.2數學建模中的常見問題1.2人工智慧下的數學1.2.1統計量1.2.2矩陣概念及運算1.2.3概率論與數理統計1.2.4高等數學——導數、微分、不定積分、定積分
第2章 Python快速入門
2.1安裝Python
2.1.1Python安裝步驟2.1.2IDE的選擇2.2Python基本操作2.2.1第 一個小程序2.2.2注釋與格式化輸出2.2.3列表、元組、字典2.2.4條件語句與循環語句2.2.5break、continue、pass2.3Python高級操作2.3.1lambda2.3.2map2.3.3filter
第3章Python科學計算庫NumPy
3.1NumPy簡介與安裝
3.1.1NumPy簡介3.1.2NumPy安裝3.2基本操作3.2.1初識NumPy3.2.2NumPy數組類型3.2.3NumPy創建數組3.2.4索引與切片3.2.5矩陣合並與分割3.2.6矩陣運算與線性代數3.2.7NumPy的廣播機制3.2.8NumPy統計函數3.2.9NumPy排序、搜索3.2.10NumPy數據的保存
第4章常用科學計算模塊快速入門
4.1Pandas科學計算庫
4.1.1初識Pandas4.1.2Pandas基本操作4.2Matplotlib可視化圖庫4.2.1初識Matplotlib4.2.2Matplotlib基本操作4.2.3Matplotlib繪圖案例4.3SciPy科學計算庫4.3.1初識SciPy4.3.2SciPy基本操作4.3.3SciPy圖像處理案例第5章Python網路爬蟲5.1爬蟲基礎5.1.1初識爬蟲5.1.2網路爬蟲的演算法5.2爬蟲入門實戰5.2.1調用API5.2.2爬蟲實戰5.3爬蟲進階—高效率爬蟲5.3.1多進程5.3.2多線程5.3.3協程5.3.4小結
第6章Python數據存儲
6.1關系型資料庫MySQL
6.1.1初識MySQL6.1.2Python操作MySQL6.2NoSQL之MongoDB6.2.1初識NoSQL6.2.2Python操作MongoDB6.3本章小結6.3.1資料庫基本理論6.3.2資料庫結合6.3.3結束語
第7章Python數據分析
7.1數據獲取
7.1.1從鍵盤獲取數據7.1.2文件的讀取與寫入7.1.3Pandas讀寫操作7.2數據分析案例7.2.1普查數據統計分析案例7.2.2小結
第8章自然語言處理
8.1Jieba分詞基礎
8.1.1Jieba中文分詞8.1.2Jieba分詞的3種模式8.1.3標注詞性與添加定義詞8.2關鍵詞提取8.2.1TF-IDF關鍵詞提取8.2.2TextRank關鍵詞提取8.3word2vec介紹8.3.1word2vec基礎原理簡介8.3.2word2vec訓練模型8.3.3基於gensim的word2vec實戰
第9章從回歸分析到演算法基礎
9.1回歸分析簡介
9.1.1「回歸」一詞的來源9.1.2回歸與相關9.1.3回歸模型的劃分與應用9.2線性回歸分析實戰9.2.1線性回歸的建立與求解9.2.2Python求解回歸模型案例9.2.3檢驗、預測與控制
第10章 從K-Means聚類看演算法調參
10.1K-Means基本概述
10.1.1K-Means簡介10.1.2目標函數10.1.3演算法流程10.1.4演算法優缺點分析10.2K-Means實戰
第11章 從決策樹看演算法升級
11.1決策樹基本簡介
11.2經典演算法介紹11.2.1信息熵11.2.2信息增益11.2.3信息增益率11.2.4基尼系數11.2.5小結11.3決策樹實戰11.3.1決策樹回歸11.3.2決策樹的分類
第12章 從樸素貝葉斯看演算法多變193
12.1樸素貝葉斯簡介
12.1.1認識樸素貝葉斯12.1.2樸素貝葉斯分類的工作過程12.1.3樸素貝葉斯演算法的優缺點12.23種樸素貝葉斯實戰
第13章 從推薦系統看演算法場景
13.1推薦系統簡介
13.1.1推薦系統的發展13.1.2協同過濾13.2基於文本的推薦13.2.1標簽與知識圖譜推薦案例13.2.2小結
第14章 從TensorFlow開啟深度學習之旅
14.1初識TensorFlow
14.1.1什麼是TensorFlow14.1.2安裝TensorFlow14.1.3TensorFlow基本概念與原理14.2TensorFlow數據結構14.2.1階14.2.2形狀14.2.3數據類型14.3生成數據十二法14.3.1生成Tensor14.3.2生成序列14.3.3生成隨機數14.4TensorFlow實戰
希望對你有幫助!!!
貴在堅持,自己掌握一些,在工作中不斷打磨,高薪不是夢!!!
⑹ python有沒有包可以計算信息熵
決策樹演算法就是一個劃分數據集的過程。劃分數據集的原則就是:
將無序的數據變得更加有序。我們假設得到的數據是有用的信息,處理信息的一種有效的方法就是利用資訊理論。
信息增益:劃分數據集前後信息的變化成為信息增益,獲得信息增益最高的特徵就是最好的選擇。那麼如何計算信息增益?集合信息的度量方式稱為熵。
⑺ Python最大熵分類器問題,怎麼解決
最大熵模型與處理
日常生活中,很多事情的發生表現出一定的隨機性,試驗的結果往往是不確定的,而且也不知道這個隨機現象所服從的概率分布,所有的只有一些試驗樣本或樣本特徵,統計學常常關心的一個問題,在這種情況下如何對分布作出一個合理的推斷?根據樣本信息對某個未知分布作出推斷的方法,最大熵的方法就是這樣一個方法。
最大熵原理是在1957 年由E.T.Jaynes 提出的,其主要思想是,在只掌握關於未知分布的部分知識時,應該選取符合這些知識但熵值最大的概率分布。因為在這種情況下,符合已知知識的概率分布可能不止一個。我們知道,熵定義的實際上是一個隨機變數的不確定性,熵最大的時侯,說明隨機變數最不確定,換句話說,也就是隨機變數最隨機,對其行為做准確預測最困難。從這個意義上講,那麼最大熵原理的實質就是,在已知部分知識的前提下,關於未知分布最合理的推斷就是符合已知知識最不確定或最隨機的推斷,這是我們可以作出的唯一不偏不倚的選擇,任何其它的選擇都意味著我們增加了其它的約束和假設,這些約束和假設根據我們掌握的信息無法作出。
⑻ 提取HSV顏色特徵,並計算維數的熵,最後保存特徵和熵,形式:圖像名、特徵和熵,用python實現,怎麼實現
可以使用Python版的opencv 來實現。
現讀取圖片:
importcv2
importnumpyasnp
image=cv2.imread('./src/q5.png')
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
計算熵
img=np.array(HSV)
foriinrange(len(img)):
forjinrange(len(img[i])):
val=img[i][j]
tmp[val]=float(tmp[val]+1)
k=float(k+1)
foriinrange(len(tmp)):
tmp[i]=float(tmp[i]/k)
foriinrange(len(tmp)):
if(tmp[i]==0):
res=res
else:
res=float(res-tmp[i]*(math.log(tmp[i])/math.log(2.0)))
保存:
HSV圖形可以直接存儲,特徵可以存xml中~
cv2.imwrite("具體路徑",HSV)
⑼ 提取HSV顏色特徵,計算特徵的熵,最後保存特徵和熵,形式:圖像名、特徵和熵,用python實現,怎麼實現
可以使用Python版的opencv 來實現。
現讀取圖片:
import cv2import numpy as npfrom matplotlib import pyplot as pltimage=cv2.imread('./src/q5.png')
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)img = np.array(HSV)for i in range(len(img)): for j in range(len(img[i])): val = img[i][j] tmp[val] = float(tmp[val] + 1) k = float(k + 1)for i in range(len(tmp)): tmp[i] = float(tmp[i] / k)for i in range(len(tmp)): if(tmp[i] == 0): res = res else: res = float(res - tmp[i] * (math.log(tmp[i]) / math.log(2.0)))
⑽ 怎麼用熵決策樹模型優化 剪枝函數python
一般決策樹學習演算法是一個遞歸地選擇最優特徵並根據特徵對訓練數據進行分割,使每個子數據集都有一個最好的分類的過程。演算法包括:
step1:特徵選擇(根據熵或基尼指數選擇特徵)
step2:決策樹生成(有ID3、C4.5、CART演算法等)
step3:剪枝(防止過擬合)!