180108 协方差矩阵计算

# -*- coding: utf-8 -*-
"""
Created on Mon Jan  8 13:54:24 2018

@author: brucelau
"""

import numpy as np
import matplotlib.pyplot as plt

def conv(data):
    '''
    u = E(X)
    v = E(Y)
    Conv(X,Y) = E[(X-u)(Y-v)]

    dxi = xi -x_mu
    dyi = yi -y_mu
    Conv(X,Y) = Σ(dxi*dyi)/n
    '''
    mu =  np.mean(data,axis=0)
    mu0 = mu[0]
    mu1 = mu[1]
    return np.sum((data[:,0]-mu0)*(data[:,1]-mu1))/len(data)
def conv2(data):
    '''
    Conv(X,Y)=E[XY]-E[X]E[Y]
    '''
    return np.mean(data[:,0]*data[:,1])-np.mean(data[:,0])*np.mean(data[:,1])

def RouXY(data):
    cv = conv(data)
    v1,v2 = np.std(data[:,0]),np.std(data[:,1])
    return cv/(v1*v2)

data = np.array([[-6,-7],[8,-5],[-4,7],[10,9]])
cv = conv(data)
rouxy = RouXY(data)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(data[:,0],data[:,1])
ax.grid()
ax.set_title('Calculate Convariance between Two Variables: X and Y')
ax.set_xlabel('Conv(X,Y) = Σ(dxi*dyi)/n = %d,\ndxi = xi -x_mu,dyi = yi -y_mu'%cv)
#plt.subplots_adjust(bottom=0.1)
plt.tight_layout()

print('Conv result1 = %d'%cv)
print('Conv result2 = %d'%conv2(data))
print('RouXY = %f'%rouxy)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GuokLiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值