我有以下資料集R,我想計算香農的熵。為了做到這一點,因為資料是連續的,我必須對它們進行離散化。使用包discretize2d函式,Entropy$X_1$ 和 $X_2$ 之間的熵可以計算如下:
set.seed(1234)
data <- matrix(rnorm(150 * 11, mean = 0, sd = 1), 150, 11)
library(entropy)
dis <- discretize2d(data[,1],data[,2], numBins1 = 10, numBins2 = 10)
entropy(dis)
我想創建一個list包含discretize2d變數之間的所有結果的變數,data這樣我以后就可以使用entropy(dis$1.2)并獲得與entropy(dis). 有人可以幫我編碼嗎?
uj5u.com熱心網友回復:
這是一個全基 R 解決方案。我們使用該combn(x, m)函式生成x具有 size的元素的所有組合m。這里我們想要對所以m = 2。這將創建一個 2 x 55 矩陣。然后用于apply()迭代地應用于discretize2d()該矩陣的列。的第二個引數apply()是 2,表示應用于列。我們還指定simplify = FALSE結果將保留一個串列,而不是強制轉換為一個陣列。
combs <- combn(1:ncol(data), 2)
dis <- apply(combs, 2, function(x) discretize2d(dat[, x[1]], dat[, x[2]], numBins1 = 10, numBins2 = 10), simplify = FALSE)
如果您想要指定元素的名稱,例如dis$1.2,您可以這樣做:
names(dis) <- apply(combs, 2, paste, collapse = '.')
最后,您還可以使用以下命令一次計算所有元素的熵lapply():
lapply(dis, entropy)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452118.html
上一篇:LINQvar型別轉換為List
下一篇:將CSV轉換為字典字典
