私は私の占有データセットの予測の上限を計算しようとしている上で結合しました。基本的には、家庭(= 1)で自宅ではなく(= 0)、ソング紙の訪問先(タワー)を表します。は、上部紙ソングの「人の移動における予測可能性の限界」のように、予測可能
私は、エントロピー1と予測可能性0.5を返すランダムなバイナリシーケンスで自分のコード(https://github.com/gavin-s-smith/MobilityPredictabilityUpperBoundsとから派生したもの)をテストしました。代わりに、返されたエントロピーは0.87であり、予測可能性は0.71です。
はここに私のコードです:
import numpy as np
from scipy.optimize import fsolve
from cmath import log
import math
def matchfinder(data):
data_len = len(data)
output = np.zeros(len(data))
output[0] = 1
# Using L_{n} definition from
#"Nonparametric Entropy Estimation for Stationary Process and Random Fields, with Applications to English Text"
# by Kontoyiannis et. al.
# $L_{n} = 1 + max \{l :0 \leq l \leq n, X^{l-1}_{0} = X^{-j+l-1}_{-j} \text{ for some } l \leq j \leq n \}$
# for each position, i, in the sub-sequence that occurs before the current position, start_idx
# check to see the maximum continuously equal string we can make by simultaneously extending from i and start_idx
for start_idx in range(1,data_len):
max_subsequence_matched = 0
for i in range(0,start_idx):
# for(int i = 0; i < start_idx; i++)
# {
j = 0
#increase the length of the substring starting at j and start_idx
#while they are the same keeping track of the length
while((start_idx+j < data_len) and (i+j < start_idx) and (data[i+j] == data[start_idx+j])):
j = j + 1
if j > max_subsequence_matched:
max_subsequence_matched = j;
#L_{n} is obtained by adding 1 to the longest match-length
output[start_idx] = max_subsequence_matched + 1;
return output
if __name__ == '__main__':
#Read dataset
data = np.random.randint(2,size=2000)
#Number of distinct locations
N = len(np.unique(data))
#True entropy
lambdai = matchfinder(data)
Etrue = math.pow(sum([ lambdai[i]/math.log(i+1,2) for i in range(1,len(data))]) * (1.0/len(data)),-1)
S = Etrue
#use Fano's inequality to compute the predictability
func = lambda x: (-(x*log(x,2).real+(1-x)*log(1-x,2).real)+(1-x)*log(N-1,2).real) - S
ub = fsolve(func, 0.9)[0]
print ub
matchfinder機能は最長一致を探すことによりエントロピーを見つけて(=最短ストリングが以前に見たことがない)、それに1を加算します。次に、Fanoの不等式を使用して予測可能性を計算します。
何が問題なのですか?
ありがとうございます!
あなたの答えをありがとう!私はまた、fanoの不等式とエントロピー関数が同じ基底を持つべきだと考えましたが、私はこれを変更できるかどうかは確かではありませんでした。 – Yannick