Постройте гауссовы подгруппы населения из модели GMM

Я сделал модель GMM, используя scikit, чтобы изучить python, как описано здесь:

x = df1['DNA_2']
y = df1['DNA_1']
X = np.column_stack((x, y)) # create a 2D array from the two lists
mod2 = GaussianMixture(n_components=5, covariance_type='tied', random_state=2) # build the gmm
mod2.fit(X)

Затем я использую эту модель, чтобы делать прогнозы, которые затем рисую:

df1['pred2'] = labels
fig, ax = plt.subplots(1,1)
ax.scatter(x, y, c=df1['pred2'].apply(lambda x: colors[x]), s = 0.5, alpha=0.2)
H,X,Y = density_estimation(x,y)
ax.contour(H, X, Y, 8, linewidths=0.5, cmap='viridis')

получить:

сюжет

Я хотел знать, как построить кривые Гаусса для 5 популяций. Я знаю, что могу получить средние значения, используя mod1.means_, и дисперсии, используя mod1.covariances_ (оба 2D), но как мне построить это, чтобы получить кривые для каждой совокупности?

нужно получить что-то вроде: введите здесь описание изображения


person startswithH    schedule 06.12.2019    source источник


Ответы (1)


Если это 2D GMM, как на картинке, единственный способ — построить график 2D-плотности, например: https://pythonmachinelearning.pro/clustering-with-gaussian-mixture-models/ Прикрепленный линейный график относится к 1D GMM с тремя компонентами. Чтобы построить это, вам нужно построить компонент плотности вероятности для каждого кластера/группы.

person startswithH    schedule 22.02.2020