高斯分布2
多元高斯分布的概率密度函数如下:
其中,,为向量均值,为协方差矩阵
【1】多元高斯分布的均值和方差证明 待补充
【2】假设协方差矩阵是实对称矩阵,且有n个不为0的特征值,则可以对原空间进行线性变换,使得变换后的空间各个维度上的特征向量正交。如此以来变换后的协方差矩阵就是对角矩阵。证明如下:
下面是分别是使用随机生成的二维数据和老忠实泉喷发数据,绘制用高斯混合模型预测的图形
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
from sklearn import mixture
n_samples = 300
# generate random sample, two components
np.random.seed(0)
# generate spherical data centered on (20, 20)
shifted_gaussian = np.random.randn(n_samples, 2) + np.array([20, 20])
# generate zero centered stretched Gaussian data
C = np.array([[0.0, -0.7], [3.5, 0.7]])
stretched_gaussian = np.dot(np.random.randn(n_samples, 2), C)
# concatenate the two datasets into the final training set
X_train = np.vstack([shifted_gaussian, stretched_gaussian])
# fit a Gaussian Mixture Model with two components
clf = mixture.GaussianMixture(n_components=2, covariance_type="full")
clf.fit(X_train)
# display predicted scores by the model as a contour plot
x = np.linspace(-30.0, 40.0)
y = np.linspace(-10.0, 30.0)
X, Y = np.meshgrid(x, y)
XX = np.array([X.ravel(), Y.ravel()]).T
Z = -clf.score_samples(XX)
Z = Z.reshape(X.shape)
CS = plt.contour(X, Y, Z, levels=np.logspace(0, 1.5, 10))
CB = plt.colorbar(CS, shrink=0.8, extend="both")
plt.scatter(X_train[:, 0], X_train[:, 1], 0.8)
plt.title("Negative log-likelihood predicted by a GMM")
plt.axis("tight")
plt.show()
将上述随机生成的数据替换成老忠实泉的喷发数据,横坐标是每次喷发持续的时间,纵坐标是每天喷发的间隔时间,由此绘制的图形如下:
【参考】
https://scikit-learn.org/stable/auto_examples/mixture/plot_gmm_pdf.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~