Ejemplo n.º 1
0
        public void Train(Matrix <double> inputs, Matrix <double> outputs)
        {
            Matrix <double> appendedInputs        = AppendOnes(inputs);
            Matrix <double> regularizationPart    = 1 / (2 * ridgeC) * DiagonalMatrix.Create(appendedInputs.ColumnCount, appendedInputs.ColumnCount, (int i) => (i == 0 ? 0 : 1));
            Matrix <double> regularizedCovariance = appendedInputs.Transpose() * appendedInputs + regularizationPart;

            Console.WriteLine("Solving for weights.");
            weights = regularizedCovariance.QR().Solve(appendedInputs.Transpose() * outputs);

            //IList<string> lines = new List<string>();
            //for (int i = 0; i < weights.RowCount; i++)
            //{
            //    string line = "";
            //    for (int j = 0; j < weights.ColumnCount; j++)
            //    {
            //        line += String.Format("{0}; ", weights[i,j]);
            //    }
            //    line = line.Substring(0, line.Length - 2);
            //    lines.Add(line);
            //}

            //Console.WriteLine("Weights done.");
            //System.IO.File.WriteAllLines(@"D:\weights.txt", lines);
        }