データセット内のクラスターを見つけるためにガウス混合モデリングを実行していました。最初に sklearn の Gaussian Mixture クラスを使用し、BIC によると 3 つのクラスターが最適な数であることがわかりました。
from sklearn.mixture import GaussianMixture as GMM
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scd = scaler.fit_transform(data)
n_components = np.arange(1, 21)
models = [GMM(n, covariance_type='full',random_state=42).fit(scd)
for n in n_components]
plt.plot(n_components, [m.bic(scd) for m in models], label='BIC')
次に、次のようにRでこれを再確認したかった:
library(factoextra)
library(mclust)
normFunc <- function(x){(x-mean(x, na.rm = T))/sd(x, na.rm = T)}
set.seed(123)
clust<-sapply(df,normFunc)
clust<-data.frame(clust)
BIC<-Mclust(clust, G=1:20)
summary(BIC)
ただし、R では、mclust は VEE モデルで 13 個のクラスターを言いました。違いはどこで生じたのですか?この回答min_covar=0.0000001
に記載されているようにGMM を設定しようとしましたが、そのドキュメントはサポートされなくなりました。私の考えでは、それはいくつかの小さなスケーリングの違いまたは. sklearn でチューニングすることをお勧めしますか? mclustの VVV モデルに似ていますか?covariance_type
convariance_type
covariance_type='full'