Beispiel #1
0
        //Training Data Should have only Two Attributes
        public override Common.MLCore.ModelBase BuildModel(double[][] trainingData,
                                                           string[] attributeHeaders,
                                                           int indexTargetAttribute)
        {
            VerifyData(trainingData, attributeHeaders, indexTargetAttribute);

            double[]        x, y;
            ModelLinearBase model = new ModelLinearBase(_missingValue,
                                                        _indexTargetAttribute, _trainingData.Length - 1);

            //Additional Checks
            if (trainingData.Length != 2)
            {
                throw new InvalidTrainingDataException();
            }
            if (indexTargetAttribute == 0)
            {
                x = trainingData[1];
                y = trainingData[0];
            }
            else
            {
                x = trainingData[0];
                y = trainingData[1];
            }

            model.B1 = _initB1; // Dispersion.CorrelationPearson(x, y)
                                //* (Dispersion.StandardDeviationSample(y) /
                                //        Dispersion.StandardDeviationSample(x));

            model.B0 = _initB0; // Dispersion.Mean(y) -
                                //_lm.B1 * Dispersion.Mean(x);

            int    iter = 0;
            int    row;
            double predY, error;

            while (iter++ < _maxIterations) //Do for max iterations
            {
                for (row = 0; row < x.Length; row++)
                {
                    predY    = model.B0 + x[row] * model.B1;
                    error    = predY - y[row];
                    model.B0 = model.B0 - error * _learningRate;
                    model.B1 = model.B1 - error * _learningRate * x[row];
                }
            }

            //B0 and B1 values are computed
            return(model);
        }
Beispiel #2
0
        //Training Data Should have only Two Attributes
        public override Common.MLCore.ModelBase BuildModel(double[][] trainingData,
                                                           string[] attributeHeaders,
                                                           int indexTargetAttribute)
        {
            VerifyData(trainingData, attributeHeaders, indexTargetAttribute);

            double[]        x, y;
            ModelLinearBase model = new ModelLinearBase(_missingValue,
                                                        _indexTargetAttribute, _trainingData.Length - 1);

            //Additional Checks
            if (trainingData.Length != 2)
            {
                throw new InvalidTrainingDataException();
            }
            if (indexTargetAttribute == 0)
            {
                x = trainingData[1];
                y = trainingData[0];
            }
            else
            {
                x = trainingData[0];
                y = trainingData[1];
            }

            //x,y are arrays
            model.B1 = Dispersion.CorrelationPearson(x, y)
                       * (Dispersion.StandardDeviationSample(y) /
                          Dispersion.StandardDeviationSample(x));

            model.B0 = Dispersion.Mean(y) -
                       model.B1 * Dispersion.Mean(x);

            return(model);
        }