我写了一个用于协方差矩阵的函数,我得到的输出是正确的,但是代码的问题是,高维数据集花费了太多时间。
能否请您帮我修改以下代码,以减少输出时间?
def cov_variance(norm_data,mean_of_mat):
col = len(norm_data)
row = len(norm_data[0])
out =[]
i = 0
sum_of_covar = 0
freezrow = 0
flag = 1
while flag<=len(mean_of_mat):
for r in range(row):
for c in range(col):
sum_of_covar+=(((norm_data[c][freezrow])-mean_of_mat[freezrow])*\
((norm_data[c][r])-mean_of_mat[i]))
freezrow=freezrow
out.append(sum_of_covar)
i+=1
sum_of_covar=0
freezrow=freezrow
flag+=1
freezrow+=1
i=0
out1 = map(lambda x : x/col-1,out)
cov_variance_output = reshape(out1,row)
return cov_variance_output
答案 0 :(得分:0)
就像Doctorlove已经说过的那样,不要实施自己的。几乎可以肯定,它会更慢和/或更通用(根据我的经验)。
我尝试对此信息发表评论,但是我的代表太低了。您可以在此处找到有关使用numpy计算协方差矩阵的信息:https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html