2017-04-16 12 views
-1

이 질문은 previous question을 보충합니다.파이썬에서 실제 숫자 데이터 집합에 대한 정보 내용

두 개의 Python 목록에서 정보 내용을 계산해야합니다. 이 목록에는 실수가 들어 있습니다. 나는 목록의 히스토그램에서 확률이 계산되는 다음 공식을 사용할 수 있음을 이해합니다.

sum_ij p(x_i,y_j) log_2 (p(x_i,y_j)/(p(x_i)p(y_j))/- sum_i p(y_i) log_2 p(y_i) 

정보 콘텐츠를 계산하기위한 Python API가 내장되어 있습니까?

information_content() API를 BioPython에서 사용하는 것이 좋습니다. 그러나이 기능은 알파벳 기호에 대해서만 작동합니다.

감사합니다.

+0

이 값이 불연속 또는 연속 위치 :

나는 내 GitHub의에서 모두 구현이? – Paul

+0

@Paul 그들은 연속적입니다. –

답변

2

이산 배포판의 경우 앞서 설명한 biopython 또는 scikit-learn의 sklearn.metrics.mutual_info_score을 사용할 수 있습니다. 그러나 둘 다 인용 된 수식 (기호 데이터 용)을 사용하여 "기호"데이터 간의 상호 정보를 계산합니다. 두 경우 모두 데이터 값에 고유 한 순서가 있음을 무시합니다. 연속 분포를 들어

, 당신은 엔트로피의 Kozachenko-Leonenko의 K-가장 가까운 이웃 추정을 사용하는 것이 더 낫다 (K & L 1987)와 해당 Kraskov 보낸, ..., 상호 정보 Grassberger (2004) 추정. 이들은 확률 밀도 함수를 계산하는 중간 단계를 피하고 데이터 포인트의 거리에서 k- 가장 가까운 이웃까지의 엔트로피를 직접 추정합니다.

Kozachenko-Leonenko 견적서의 기본 아이디어는 이웃 데이터 포인트 간의 평균 거리를 (일부 기능으로) 조사하는 것입니다. 직관은 거리가 클 경우 데이터의 분산이 커서 엔트로피가 커진다는 것입니다. 실제로, 가장 가까운 이웃 거리를 취하는 대신에, k는 가장 가까운 이웃 거리 (k는 전형적으로 5 내지 20 범위의 작은 정수임)를 취하는 경향이 있는데, 이는 추정치를보다 견고하게하는 경향이있다. https://github.com/paulbrodersen/entropy_estimators