private static List <IAttributeSymbolicValues> GetSubsetOf(ISymbolicDomainDataParams symbolicDomainDataParams, int symboicValue)
 {
     return
         (symbolicDomainDataParams.Data.Where(
              attributeSymbolicValues => attributeSymbolicValues.Values[symbolicDomainDataParams.DomainAttributeId] == symboicValue).
          ToList());
 }
Ejemplo n.º 2
0
        public static double CalculateEntropy(ISymbolicDomainDataParams symbolicDomainDataParams, int attributesCount)
        {
            if (symbolicDomainDataParams.Data.Count == 0)
            {
                return(0);
            }

            var entropy = 0.0;

            for (var i = 0; i < attributesCount; i++)
            {
                var domainAttributeValue = i;
                var count =
                    symbolicDomainDataParams.Data.Count(
                        record => record.Values[symbolicDomainDataParams.DomainAttributeId] == domainAttributeValue);

                if (count <= 0)
                {
                    continue;
                }

                var probability = count / (double)symbolicDomainDataParams.Data.Count;
                entropy += -probability *Math.Log(probability, 2);
            }

            return(entropy);
        }
        public int[] GetAllSymbolicValuesOfAttribute(ISymbolicDomainDataParams symbolicDomainDataParams)
        {
            if (symbolicDomainDataParams.Data == null || symbolicDomainDataParams.Data.Count == 0)
                return new int[0];

            var values =
                symbolicDomainDataParams.Data.Select(
                    domainSymbolicAttributes => GetSymbolOf(symbolicDomainDataParams.DomainAttributeId, domainSymbolicAttributes)).Distinct()
                    .ToList();

            var array = new int[values.Count];
            for (var i = 0; i < array.Length; i++)
            {
                var symbol = values[i];
                array[i] = Domain[symbolicDomainDataParams.DomainAttributeId].IndexOf(symbol);
            }
            return array;
        }
        public int[] GetAllSymbolicValuesOfAttribute(ISymbolicDomainDataParams symbolicDomainDataParams)
        {
            if (symbolicDomainDataParams.Data == null || symbolicDomainDataParams.Data.Count == 0)
            {
                return(new int[0]);
            }

            var values =
                symbolicDomainDataParams.Data.Select(
                    domainSymbolicAttributes => GetSymbolOf(symbolicDomainDataParams.DomainAttributeId, domainSymbolicAttributes)).Distinct()
                .ToList();

            var array = new int[values.Count];

            for (var i = 0; i < array.Length; i++)
            {
                var symbol = values[i];
                array[i] = Domain[symbolicDomainDataParams.DomainAttributeId].IndexOf(symbol);
            }
            return(array);
        }
        public static double CalculateEntropy(ISymbolicDomainDataParams symbolicDomainDataParams, int attributesCount)
        {
            if (symbolicDomainDataParams.Data.Count == 0)
                return 0;

            var entropy = 0.0;

            for (var i = 0; i < attributesCount; i++)
            {
                var domainAttributeValue = i;
                var count =
                    symbolicDomainDataParams.Data.Count(
                        record => record.Values[symbolicDomainDataParams.DomainAttributeId] == domainAttributeValue);

                if (count <= 0)
                    continue;

                var probability = count / (double)symbolicDomainDataParams.Data.Count;
                entropy += -probability * Math.Log(probability, 2);
            }

            return entropy;
        }
 private static List<IAttributeSymbolicValues> GetSubsetOf(ISymbolicDomainDataParams symbolicDomainDataParams, int symboicValue)
 {
     return
         symbolicDomainDataParams.Data.Where(
             attributeSymbolicValues => attributeSymbolicValues.Values[symbolicDomainDataParams.DomainAttributeId] == symboicValue).
             ToList();
 }