code: def _covar_mstep_diag(gmm, X, responsibilities, weighted_X_sum, norm,
                        min_covar):
      
      avg_X2 = np.dot(responsibilities.T, X * X) * norm
      avg_means2 = gmm.means_ ** 2
      avg_X_means = gmm.means_ * weighted_X_sum * norm
      return avg_X2 - 2 * avg_X_means + avg_means2 + min_covar
docs: Performing the covariance M step for diagonal cases