【发布时间】:2022-01-08 13:07:55
【问题描述】:
我使用以下数据生成:
from scipy.stats import skewnorm
import matplotlib.pyplot as plt
import numpy as np
numValues = 10000
maxValue = 100
skewness = -5
data = skewnorm.rvs(a = skewness,loc=maxValue, size=numValues)
对于高斯模型,我从下面计算了 AIC:
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components = 1).fit(X=np.expand_dims(data,1))
gmm_aic = gmm.aic(X=np.expand_dims(data,1))
gmm_bic = gmm.bic(X=np.expand_dims(data,1))
对于对数正态模型,我取数据的对数并从下面拟合高斯:
log_gmm = GaussianMixture(n_components = 1).fit(X=np.expand_dims(np.log(data),1))
并在 data 而非 np.log(data)
上计算此模型的 AIClog_gmm_aic = log_gmm.aic(X=np.expand_dims(data,1))
log_gmm_bic = log_gmm.bic(X=np.expand_dims(data,1))
这样,我在这两种情况下的 AIC 和 BIC 值都是:
Guassian - AIC: 18790.27 BIC:18804.69
lognormal - AIC: 2231500479614.06 BIC:2231500479628.48
价值似乎无法比拟。 如果我想计算对数正态模型的 AIC 和 BIC,我做错了什么?
【问题讨论】:
-
可能更适合Cross Validated
标签: python scikit-learn distribution model-fitting gaussian-mixture-model