/// <summary>
        /// Отобразить кластеры рекурсивно.
        /// </summary>
        /// <param name="cluster">Кластер для отображения.</param>
        /// <param name="parentNode">Родительская вершина дерева.</param>
        private void DrawClustersRecursive(NetworkCluster cluster, TreeNode parentNode)
        {
            var index = parentNode.Nodes.Add(new TreeNode
            {
                Text = $"{cluster.Number} ({cluster.Entities?.Count ?? 0})",
                Tag  = cluster
            });

            if (!(cluster.Clusters?.Any() ?? false))
            {
                return;
            }

            foreach (var subCluster in cluster.Clusters)
            {
                DrawClustersRecursive(subCluster, parentNode.Nodes[index]);
            }
        }
        /// <summary>
        /// Тестировать сеть рекурсивно.
        /// </summary>
        /// <param name="cluster">Текущий кластер.</param>
        private void TestDataRecursive(NetworkCluster cluster)
        {
            if (!(cluster.Entities?.Any() ?? false) ||
                !(cluster.Clusters?.Any() ?? false) ||
                cluster.NetworkId == null)
            {
                return;
            }

            cluster.Clusters.ForEach(c => c.Entities.Clear());

            var currentNetworkData = _networkService.GetNetworkData(cluster.NetworkId.Value);
            var neuralNetwork = IoC.Instance.Resolve<AbstractNetwork>();
            neuralNetwork.InitializeNetwork(
                currentNetworkData.Neurons.Select(e => e.Neuron).ToList(),
                currentNetworkData.InputAttributes,
                currentNetworkData.Weights);

			RecalcMinMaxValues(cluster.Entities);

			foreach (var data in cluster.Entities)
            {
                var attributeValues = data.AttributeValues
                    .Select(attr => new InputAttributeValue
                    {
                        InputAttributeNumber = attr.Attribute.OrderNumber,
                        Value = attr.GetNormalizedValue(_neuralNetwork.NormalizationType)
                    })
                    .ToList();

                var result = neuralNetwork.GetNeuronWinner(attributeValues).NeuronNumber;
                cluster.Clusters.First(c => c.Number == result).Entities.Add(data);
            }

            foreach (var subCluster in cluster.Clusters)
            {
                TestDataRecursive(subCluster);
            }
        }