python数据标准化1002无标题,Scikit标准化互信息学习给我错误的值
我是Python新手,我試圖看到兩個不同信號之間的標準化互信息,不管我使用什么信號,我得到的結(jié)果總是1,我認為這是不可能的,因為信號是不同的,不是完全相關(guān)的。
我使用的是Normalized Mutual Information Function provided Scikit Learn:sklearn.metrics.normalized mutanalinfo評分(labels為true,labels為pred)。
下面是我使用的代碼:from numpy.random import randn
from numpy import *
from matplotlib.pyplot import *
from sklearn.metrics.cluster import normalized_mutual_info_score as mi
import pandas as pd
def fzX(X):
''' z-scoring columns'''
if len(X.shape)>1:
'''X is matrix ... more vars'''
meanX=mean(X,0)
stdX=std(X,0)
stdX[stdX<1e-9]=0
zX=zeros(X.shape)
for i in range(X.shape[1]):
if stdX[i]>0:
zX[:,i]=(X[:,i]-meanX[i])/stdX[i]
else:
zX[:,i]=0
else:
'''X is vector ... more vars'''
meanX=mean(X)
stdX=std(X,0)
zX=(X-meanX)/stdX
return(zX,meanX,stdX)
def fMI(X):
'''vars in columns,
returns mut info of normalized data'''
zX,meanX,stdX=fzX(X)
n=X.shape[1]
Mut_Info=zeros((n,n))
for i in range(n):
for j in range(i,n):
Mut_Info[i,j]=mi(zX[:,i],zX[:,j])
Mut_Info[j,i]=Mut_Info[i,j]
plot(zX);show()
return(Mut_Info)
t=arange(0,100,0.1) # t=0:0.1:99.9
N=len(t) # number of samples in t
u=sin(2*pi*t)+(randn(N)*2)**2
y=(cos(2*pi*t-2))**2+randn(N)*2
X=zeros((len(u),2))
X[:,0]=u
X[:,1]=y
mut=fMI(X)
print mut
plot(X)
show()
你們以前有過類似的問題嗎?你知道我做錯了什么嗎?
非常感謝您的奉獻。
總結(jié)
以上是生活随笔為你收集整理的python数据标准化1002无标题,Scikit标准化互信息学习给我错误的值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 您好,关于人大毕业生为追求梦想不顾一切的
- 下一篇: 威海海上恒大帝国的位置在哪里,威海的海上