In [1]:
import sklearn
import matplotlib.pyplot as plt

In [2]:
from sklearn import datasets

In [3]:
from sklearn.mixture import GaussianMixture

In [4]:
import numpy

In [5]:
iris = datasets.load_iris()

In [6]:
from sklearn.model_selection import StratifiedKFold

In [7]:
skf = StratifiedKFold(n_splits=4)

In [8]:
train_index, test_index = next(iter(skf.split(iris.data, iris.target)))

In [23]:
X_train = iris.data[train_index]
y_train = iris.target[train_index]
X_test = iris.data[test_index]
y_test = iris.target[test_index]

In [10]:
n_classes = len(numpy.unique(y_train))

In [11]:
n_classes


Out[11]:
3

In [14]:
estimators = dict((cov_type, GaussianMixture(n_components=n_classes, covariance_type=cov_type, max_iter=20, random_state=0))  for cov_type in ['spherical', 'diag', 'tied', 'full'])

In [16]:
y_train


Out[16]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

In [17]:
estd = estimators['diag']

In [26]:
estd.means_init = numpy.array([X_train[y_train == i].mean(axis=0) for i in range(n_classes)])

In [27]:
estd.means_init


Out[27]:
array([[ 5.04594595,  3.45135135,  1.46486486,  0.25675676],
       [ 5.91621622,  2.77297297,  4.25945946,  1.32432432],
       [ 6.59459459,  2.98378378,  5.51351351,  2.02432432]])

In [ ]: