Entropie Shannon R in Python

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Joey21
User
Beiträge: 3
Registriert: Dienstag 30. Januar 2018, 00:00

Dienstag 30. Januar 2018, 00:06

Hi Community ,

ich habe als Aufgabe bekommen dass ich den Code in R von der Entropy Shannon in Python übersetze.

# Integrationsgewichte
me.G5 = read.csv('xy.csv',sep=';',header=FALSE)[,2:3]
me.x = me.G5[,1]
me.w = me.G5[,2]
int.x = c((me.x/2+.5)*0.1,0.1+(me.x/2+.5)*0.9,1+(me.x/2+.5)*9,10+(me.x/2+.5)*90,100+(me.x/2+.5)*900)
int.w = c(me.w*0.1/2,me.w*.9/2,me.w*9/2,me.w*90/2,me.w*900/2)

# Entropie nach Shannon

### pdf
me.pdf = function(MF,l) {
pdf = function(x){
X = matrix(NaN,length(x),length(l))
for(i in 1:length(l)) X[,i] = MF[](x)
exp(l%*%t(X))
}
pdf
}
### l
me.l = function(MF,mt,sv=NA,tol=1e-10) {
V = mt[2:length(mt)]
if(is.na(sv[1])) l = rep(0,length(V)) else l = sv[-1]
X = matrix(NaN,length(int.x),length(l))
for(i in 2:length(MF)) X[,i-1] = MF[](int.x)
run = 0;sig = 1
while((max(abs(sig))>tol)&(run<40)) {
m1 = as.vector(exp(l%*%t(X))*int.w)
g = m1%*%t(t(X)-V)
G = (t(X)-V)%*%(m1*t(t(X)-V))
sig = solve(G,-t(g))
l = l + sig
l = as.vector(l)
run = run +1
}
m1 = as.vector(exp(l%*%t(X))*int.w)
l0 = -log(sum(m1))
c(l0,l)
}

mir fällt die zweite Funktion ziemlich schwer zu übersetzen , vielleicht gibt es einige die beide Sprachen ziemlich gut beherrschen , wäre echt ziemlich dankbar :D
Antworten