Exemplo n.º 1
0
 public TablRow(DaoRec rec)
 {
     foreach (Field f in rec.Recordset.Fields)
     {
         Means.Add(f.Name, rec.GetMean(f.Type.ToDataType(), f.Name));
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Generates new normal distribution settings as a sum of correlated normal distributions with coefficients <paramref name="coeffs"/> (c1*A+c2*B+c3*C etc.)
        /// </summary>
        /// <param name="coeffs">Coefficients vector that will be applied to the sum of normal distributions.</param>
        /// <returns>Normal distribution settings instance.</returns>
        public NormalDistributionSettings GetUnivariateDistributionSettings(double[] coeffs)
        {
            if (coeffs == null)
            {
                coeffs = Vector.Ones(Dimension);
            }

            if (coeffs.Length != Dimension)
            {
                throw new DistributionsArgumentException(DistributionsArgumentExceptionType.VectorOfCoeffitientsMustBeEqualToDimension);
            }

            if (coeffs.All(x => x == 1))
            {
                return(new NormalDistributionSettings(Means.Sum(), Math.Sqrt(CovarianceMatrix.Sum())));
            }

            double[,] ltf = Chol.LeftTriangularFactor;

            var weighted  = Matrix.Diagonal(coeffs).Dot(ltf);
            var colSumPow = weighted.Transpose().Dot(Vector.Ones(Dimension)).Pow(2);

            double variance = colSumPow.Sum();

            double mean = Elementwise.Multiply(coeffs, Means).Sum();

            return(new NormalDistributionSettings(mean, Math.Sqrt(variance)));
        }
Exemplo n.º 3
0
        private Pipeline CreateClassifier()
        {
            if (NumberOfOutputs == 0)
            {
                return(null);
            }

            return(new Pipeline()
            {
                NumberOfInputs = NumberOfInputs,
                NumberOfOutputs = NumberOfClasses,
                First = new MultivariateKernelRegression()
                {
                    Weights = DiscriminantVectors,
                    Intercept = Means.DotWithTransposed(DiscriminantVectors).Multiply(-1),
                    BasisVectors = input,
                    Kernel = Kernel,
                    NumberOfInputs = NumberOfInputs,
                    NumberOfOutputs = NumberOfOutputs,
                },
                Second = new MinimumMeanDistanceClassifier()
                {
                    Means = projectedMeans,
                    NumberOfInputs = NumberOfOutputs,
                    NumberOfOutputs = NumberOfClasses,
                }
            });
        }
Exemplo n.º 4
0
        private MixtureModel(IList <int> k, IList <int> n, double[] startingMeans) :
            this(k, n, startingMeans, new double[startingMeans.Length])
        {
            int minIndex = Array.IndexOf(Means, Means.Min());

            MixtureWeights[minIndex] = 0.99;
            for (int i = 0; i < MixtureWeights.Length; i++)
            {
                if (i == minIndex)
                {
                    continue;
                }
                MixtureWeights[i] = 0.01 / (MixtureWeights.Length - 1);
            }
        }
Exemplo n.º 5
0
        public void Predict(TimeSpan ts)
        {
            lastTimeSpan = ts;

            var lastdate = Means.Last().Key;

            var newdate = lastdate + ts;

            var xp = filter.Predict(x, P, f, Q, lastTimeSpan.Ticks);

            var x_ = x.ToArray();

            Means[newdate] = x_;

            var P_ = P.ToArray();

            CoVariances[newdate] = P_;
        }
        public void Predict(out double[] x_, out double[,] P_, TimeSpan ts)
        {
            lastTimeSpan = ts;

            var lastdate = Means.Last().Key;

            var newdate = lastdate + ts;

            Q = q.Matrix(ts.Ticks);

            var xp = FilterSharp.Predict(x, P, f, Q, lastTimeSpan.Ticks);

            x_             = x.ToArray();
            Means[newdate] = x_;

            P_ = P.ToArray();

            CoVariances[newdate] = P_;
        }
 public Tuple <DateTime, double>[] PositionMeans()
 {
     return(Means.Select(_ => new Tuple <DateTime, double>(_.Key, _.Value[0])).ToArray());
 }