python – 尝试绘制二元正态的轮廓,不适用于相关项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 尝试绘制二元正态的轮廓,不适用于相关项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1811字,纯文字阅读大概需要3分钟。
内容图文
![python – 尝试绘制二元正态的轮廓,不适用于相关项](/upload/InfoBanner/zyjiaocheng/794/e1e3ac8a6d3543529a83abb95bc20e66.jpg)
参考本教程:http://matplotlib.org/1.4.0/examples/pylab_examples/contour_demo.html
这是来自mplotlib.mlab的bivariate_normal函数的原型:
bivariate_normal(X, Y, sigmax=1.0, sigmay=1.0, mux=0.0, muy=0.0, sigmaxy=0.0)
X和Y定义网格,我们有二维均值和协方差项的参数.
正如您所看到的,最后有一个关于x和y之间协方差的论证.这是事情:
如果sigmaxy = 0,plt.contour()将绘制双变量正态轮廓.但是,如果sigmaxy有任何其他值,我得到一个
ValueError: zero-size array to reduction operation minimum which has no identity
例如,
Z = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0, 0.0)
plt.contour(X,Y,Z)
作品
但是,以下不起作用:
Z = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0, 1.0)
plt.contour(X,Y,Z)
任何熟悉matplotlib的人都有什么想法吗?谢谢.
解决方法:
它不起作用,因为你的协方差矩阵不是正定的.要查看矩阵是否为正定,您可以检查其所有特征值是否大于零.
极端的情况
import numpy as np
from matplotlib.mlab import bivariate_normal
from matplotlib import pylab as plt
cov_test = np.array([[1,0.999],
[0.999,1]])
print np.linalg.eigvals(cov_test)
[1.99900000e 00 1.00000000e-03]
你可以看到第二个特征值超接近零.实际上,如果你绘制它,你会发现这实际上是一个协方差的极端情况:
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = bivariate_normal(X, Y, cov_test[0,0], cov_test[1,1], 0.0, 0.0, cov_test[0,1])
plt.contour(X,Y,Z)
非正定案例:
如果你走得更远……
import numpy as np
from matplotlib import pylab as plt
cov_test = np.array([[1,1],
[1,1]])
print np.linalg.eigvals(cov_test)
[2. 0.]
然后第二个特征值达到0,这不是肯定的,如果你试图绘制它,那么:
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = bivariate_normal(X, Y, cov_test[0,0], cov_test[1,1], 0.0, 0.0, cov_test[0,1])
plt.contour(X,Y,Z)
你得到错误:
ValueError: zero-size array to reduction operation minimum which has no identity`
实际上,我的Z现在充满了NaN
内容总结
以上是互联网集市为您收集整理的python – 尝试绘制二元正态的轮廓,不适用于相关项全部内容,希望文章能够帮你解决python – 尝试绘制二元正态的轮廓,不适用于相关项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。