public TablRow(DaoRec rec) { foreach (Field f in rec.Recordset.Fields) { Means.Add(f.Name, rec.GetMean(f.Type.ToDataType(), f.Name)); } }
/// <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))); }
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, } }); }
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); } }
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()); }