我最近在我的大学开设了数据压缩课程.但是,我发现使用术语"熵",因为它适用于计算机科学而不是模棱两可.据我所知,它大致转化为系统或结构的"随机性".
计算机科学"熵"的正确定义是什么?
computer-science entropy data-compression information-theory
对于mxn矩阵,计算所有列对(nxn)的互信息的最佳(最快)方法是什么?
通过互信,我的意思是:
I(X,Y)= H(X)+ H(Y) - H(X,Y)
其中H(X)是指的香农熵X.
目前我正在使用np.histogram2d并np.histogram计算关节(X,Y)和个体(X或Y)计数.对于给定的矩阵A(例如250000 X 1000浮点矩阵),我正在做一个嵌套for循环,
n = A.shape[1]
for ix = arange(n)
for jx = arange(ix+1,n):
matMI[ix,jx]= calc_MI(A[:,ix],A[:,jx])
Run Code Online (Sandbox Code Playgroud)
当然必须有更好/更快的方法来做到这一点?
顺便说一句,我也在数组上寻找列(列式或行式操作)的映射函数,但还没有找到一个很好的通用答案.
这是我的完整实现,遵循Wiki页面中的约定:
import numpy as np
def calc_MI(X,Y,bins):
c_XY = np.histogram2d(X,Y,bins)[0]
c_X = np.histogram(X,bins)[0]
c_Y = np.histogram(Y,bins)[0]
H_X = shan_entropy(c_X)
H_Y = shan_entropy(c_Y)
H_XY = shan_entropy(c_XY)
MI = H_X + H_Y …Run Code Online (Sandbox Code Playgroud) 有没有标准的方法来做到这一点?
谷歌搜索 - "近似熵"位 - 揭示多篇学术论文,但我想找到一个伪代码块来定义任意长度的给定位串的近似熵.
(如果这说起来容易做起,而且取决于应用程序,我的应用程序涉及16,320位加密数据(密文).但加密为难题而不是无法破解.我以为我先检查一下熵,但不能轻易找到这样的好定义.所以这似乎是一个应该在StackOverflow上的问题!关于从哪里开始去除16k随机看似位的想法也是受欢迎的......)
另请参阅此相关问题:
熵的计算机科学定义是什么?
我有两个黑白图像,我需要计算互信息.
Image 1 = X
Image 2 = Y
Run Code Online (Sandbox Code Playgroud)
我知道互信息可以定义为:
MI = entropy(X) + entropy(Y) - JointEntropy(X,Y)
Run Code Online (Sandbox Code Playgroud)
MATLAB已经具有内置函数来计算熵但不计算联合熵.我想真正的问题是:我如何计算两幅图像的联合熵?
这是我想要找到的联合熵的图像示例:
X =
0 0 0 0 0 0
0 0 1 1 0 0
0 0 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0
Y =
0 0 0 0 0 0
0 0 0.38 0.82 0.38 0.04
0 0 0.32 0.82 0.68 0.17
0 0 0.04 0.14 0.11 0
0 0 0 …Run Code Online (Sandbox Code Playgroud) [Frontmatter] (如果您只是想要问题,请跳过此处):
我目前正在考虑使用Shannon-Weaver互信息和规范化冗余来测量按特征组织的离散和连续特征值之间的信息屏蔽程度.使用这种方法,我的目标是构建一个看起来非常类似于ID3的算法,但是算法将寻找(作为循环约束)以最大化或最小化单个特征和集合之间的共享信息,而不是使用香农熵.基于完整输入要素空间的要素,如果(并且仅当)它们分别增加或减少相互信息,则向后一个集合添加新要素.实际上,这将ID3的决策算法移动到成对空间中,使用两种方法的所有预期时间和空间复杂性来装订集合方法.
[/ Frontmatter]
关于这个问题:我正在尝试使用SciPy让一个连续的集成商在Python中工作.因为我正在使用离散变量和连续变量的比较,我对特征 - 特征对的每个比较的当前策略如下:
对于后一种情况,我可能会执行某种离散化,但由于我的输入数据集本身并不是线性的,因此这可能是不必要的复杂.
这是突出的代码:
import math
import numpy
import scipy
from scipy.stats import gaussian_kde
from scipy.integrate import dblquad
# Constants
MIN_DOUBLE = 4.9406564584124654e-324
# The minimum size of a Float64; used here to prevent the
# logarithmic function from hitting its undefined region
# at its asymptote of 0.
INF = float('inf') # …Run Code Online (Sandbox Code Playgroud) 想象一下,在接下来的10年里,您拥有世界上所有的超级计算机.你的任务是尽可能无损地压缩10部完整的电影.另一个标准是普通计算机应该能够动态解压缩,并且不需要花费太多的HD来安装解压缩软件.
我的问题是,你能比现在最好的替代方案实现多少压缩?1%,5%,50%?更具体地说:给定一个固定的字典大小(如果它也被称为视频压缩),是否存在压缩的理论限制?
杰夫阿特伍德最近发布了一个链接到CodeReview帖子,他想知道社区是否可以改善他的" 计算字符串熵 "代码片段.他解释说,"我们正在计算Stack Overflow中几个字符串的熵,作为低质量的标志."
他的方法的要点似乎是,如果计算字符串中唯一字符的数量,则表示熵(代码取自PieterG的答案):
int uniqueCharacterCount = string.Distinct().Count();
Run Code Online (Sandbox Code Playgroud)
我不明白唯一字符数如何表示字符串的熵,以及字符串的熵如何表示低质量.我想知道在这方面有更多知识的人是否可以解释阿特伍德先生想要完成的事情.
谢谢!
我有一组随机生成的正式图,我想计算每个图的熵.同样的问题用不同的词语:我有几个网络,并且想要计算每个网络的信息内容.
以下是包含图熵正式定义的两个来源:
http://www.cs.washington.edu/homes/anuprao/pubs/CSE533Autumn2010/lecture4.pdf (PDF)
http://arxiv.org/abs/0711.4175v1
我正在寻找的代码将图形作为输入(作为边缘列表或邻接矩阵)并输出多个位或一些其他信息内容度量.
因为我无法在任何地方找到这个实现,所以我打算根据正式定义从头开始编写代码.如果有人已经解决了这个问题,并愿意分享代码,那将非常感激.
信息模型和本体论有什么区别?
他们看起来和我一样.
谢谢!
信息理论在存在编码和解码的地方发挥作用.例如:压缩(多媒体),加密.
在信息理论中,我们遇到诸如"熵","自我信息","相互信息"之类的术语,整个主题基于这些术语.这听起来只不过是抽象的.坦率地说,他们没有任何意义.
是否有任何书籍/材料/解释(如果可以的话)以实用的方式解释这些事情?
编辑:
信息理论导论:约翰罗宾逊皮尔斯的符号,信号和噪音是本书,以我想要的方式(实际上)解释它.太好了.我开始读它了.
compression encryption cryptography image-processing information-theory
entropy ×5
compression ×2
encryption ×2
python ×2
scipy ×2
cryptography ×1
graph ×1
image ×1
math ×1
matlab ×1
numpy ×1
ontology ×1
performance ×1