Exemple #1
0
            /// <summary>
            /// Конструктор класса
            /// </summary>
            /// <param name="dataset">Выборка</param>
            /// <param name="minR">Минимальный радиус</param>
            public Forel(Vector[] dataset, int minR)
            {
                Vector _old = new Vector(), _new = new Vector(); // Центры гиперсфер

                _datasetNotClasteris = _dataset = dataset;       // Загрузка выборки
                _old = _mainCentr = GetCentr(_dataset);          // Получение центра
                Rn   = R0 = Max(_dataset, _mainCentr);           // Начальный радиус гиперсферы



                // Кластеризация
                while (_datasetNotClasteris.Length != 0)
                {
                    Rn          = 0.9 * R0;                                                        // Уменьшение радиуса гиперсферы
                    _nowDataset = GetGipersfer(Rn, _datasetNotClasteris[0], _datasetNotClasteris); // обводка гиперсферой
                    _new        = GetCentr(_nowDataset);                                           // новый центр

                    //Центр кластера
                    while ((_old != _new) && (Rn >= minR))
                    {
                        Rn         *= 0.9;                                          //Уменьшение радиуса гиперсферы
                        _old        = _new;                                         // сохранение старого радиуса
                        _nowDataset = GetGipersfer(Rn, _old, _datasetNotClasteris); // обводка гиперсферой
                        _new        = GetCentr(_nowDataset);                        // новый центр
                    }

                    _claster = new Claster
                    {
                        Centr   = _new,                                                  // Добавление центра
                        Dataset = _nowDataset                                            // выборка
                    };                                                                   // Новый кластер
                    _clasters.Add(_claster);                                             // Добавление кластера в коллекцию
                    _datasetNotClasteris = AWithOutB(_datasetNotClasteris, _nowDataset); // Удаление кластеризированных данных
                }
            }
Exemple #2
0
            public Claster GetStruct()
            {
                Claster claster = new Claster();

                claster.Volume_sum     = this.Volume_sum;
                claster.Volume_Ask_sum = this.Volume_Ask_sum;
                claster.Volume_Bid_sum = this.Volume_Bid_sum;
                return(claster);
            }
Exemple #3
0
        public override double LansaWilliamsDistance(Claster Sl, Claster Sh, Claster Sm)
        {
            int Nl = Sl.Points.Count;
            int Nh = Sh.Points.Count;

            double den = Nl + Nh;

            SetLansaWiliamsParams(Nl / den, Nh / den, 0, 0);

            return(base.LansaWilliamsDistance(Sl, Sh, Sm));
        }
Exemple #4
0
        public double TotalIntroClusterDispersion(Claster[] clasters, Func <double[], double[], double> d)
        {
            int    k         = clasters.Length;
            int    n         = clasters[0].Center.Length;
            Matrix sumMatrix = Matrix.Create.New(n);

            for (int i = 0; i < k; i++)
            {
                Claster current = clasters[i];
                sumMatrix += current.Nj * current.GetMatrixOfCovariations();
            }

            return(sumMatrix.Determinant());
        }
Exemple #5
0
        public override double LansaWilliamsDistance(Claster Sl, Claster Sh, Claster Sm)
        {
            int Nl = Sl.Points.Count;
            int Nh = Sh.Points.Count;
            int Nm = Sm.Points.Count;

            double den = Nl + Nh + Nm;

            double alpha_l = (Nm + Nl) / den;
            double alpha_h = (Nm + Nh) / den;
            double beta    = -Nm / den;

            SetLansaWiliamsParams(alpha_l, alpha_h, beta, 0);

            return(base.LansaWilliamsDistance(Sl, Sh, Sm));
        }
 public double Distance(Claster Sl, Claster Sh, Claster Sm) => Distance(Sl.Points, Sh.Points, Sm.Points);
Exemple #7
0
 public virtual double LansaWilliamsDistance(Claster Sl, Claster Sh, Claster Sm)
 {
     return(lansaWilliamsaObject.Distance(Sl, Sh, Sm));
 }
Exemple #8
0
 public double GetClasterDistance(Claster S1, Claster S2) => GetClasterDistance(S1.Points, S2.Points);
Exemple #9
0
        public void work()
        {
            Claster claster = new Claster(sem.outStruct);

            claster.generateLayers();
        }