本示例说明了可以使用信息理论标准(information-theoretic criteria)(BIC)的高斯混合模型来进行模型选择。模型选择既涉及协方差类型,也涉及模型中分量(components)的数量。AIC同时也可以提供正确的结果(在本示例中没有显示,以便节省时间),但如果问题的解决在于确定正确的模型,则BIC会更适合一些。与贝叶斯过程不同,它推断(inferences)过程是无先验的(prior-free)。
本示例会选择具有2个分量和完全(full)协方差的模型(对应于真实的生成模型)。import numpy as npimport itertoolsfrom scipy import linalgimport matplotlib.pyplot as pltimport matplotlib as mplfrom sklearn import mixture
print(__doc__)# 每个分量的样本数量
n_samples = 500# 生成包括两个分量的随机样本
np.random.seed(0)
C = np.array([[0., -0.1], [1.7, .4]])
X = np.r_[np.dot(np.random.randn(n_samples, 2), C),.7 * np.random.randn(n_samples, 2) + np.array([-6, 3])]
lowest_bic = np.infty