'Estimate the tied Wishart distribution parameters.
Parameters
X : array-like, shape (n_samples, n_features)
nk : array-like, shape (n_components,)
xk : array-like, shape (n_components, n_features)
sk : array-like, shape (n_features, n_features)'

def _estimate_wishart_tied(self, nk, xk, sk):

    (_, n_features) = xk.shape
    self.degrees_of_freedom_ = (self.degrees_of_freedom_prior_ + (nk.sum() / self.n_components))
    diff = (xk - self.mean_prior_)
    self.covariances_ = ((self.covariance_prior_ + ((sk * nk.sum()) / self.n_components)) + ((self.mean_precision_prior_ / self.n_components) * np.dot(((nk / self.mean_precision_) * diff.T), diff)))
    self.covariances_ /= self.degrees_of_freedom_
