gpt4 book ai didi

python - 在 Python 中手动计算赤池信息准则 (AIC)

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:13 48 4
gpt4 key购买 nike

据我所知,Python中没有AIC包。因此,我尝试手动计算它以找到我的数据集中的最佳聚类数(我使用 K-means 进行聚类)

我遵循 Wiki 上的等式:

AIC = 2k - 2ln(最大似然)

下面是我当前的代码:

range_n_clusters = range(2, 10)
for n_clusters in range_n_clusters:
model = cluster.KMeans(n_clusters=n_clusters, init='k-means++', n_init=10, max_iter=300, tol=0.0001,
precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1)
model.fit(X)
centers = model.cluster_centers_
labels = model.labels_
likelihood = ?????
aic = 2 * len(X.columns) - 2 * likelihood
print(aic)

关于如何计算可能性值的任何指示?

//更新:使用高斯混合模型计算 AIC:

enter image description here

它不应该看起来像一条曲线吗? (而不是一条直线)

我的绘图代码:

def aic(X):
range_n_clusters = range(2, 10)
aic_list = []
for n_clusters in range_n_clusters:
model = mixture.GaussianMixture(n_components=n_clusters, init_params='kmeans')
model.fit(X)
aic_list.append(model.aic(X))
plt.plot(range_n_clusters, aic_list, marker='o')
plt.show()

最佳答案

我假设您使用 scikit-learn 来完成这项工作。在那种情况下,有一个与 K-means 相关的模型,称为 Gaussian Mixture models .这些模型可以采用 K-means 聚类来初始化。之后,它围绕 K 均值中心对高斯曲线进行建模。这将创建一个概率密度函数,该函数是对输入数据的概括。使用它的好处是,您可以计算可能性,从而计算 AIC。 .

所以你可以这样做:

from sklearn.mixture import GaussianMixture
model = GaussianMixture(n_components=n_clusters, init_params='kmeans')
model.fit(X)
print(model.aic(X))

像 Py 一样简单。

关于python - 在 Python 中手动计算赤池信息准则 (AIC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072812/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com