Матрица не имеет ранга, Множественная линейная регрессия Accord.NET

Я работаю с множественной линейной регрессией на С#, используя Accord.NET, я следовал примеру, методу нужны 2 входных аргумента, которые представляют собой массив 2d, и выходы, которые представляют собой массив 1d, два массива должны иметь одинаковую длину.

 public static double[] RegressionLineaire(double[][]input,double[]output)
    {
        double[] coeff = new double[40];
        var ols = new OrdinaryLeastSquares();
        {
            ols.UseIntercept = true;
        };
        Console.WriteLine("inputs length = " + input.Length + " outputs 
        length = " + output.Length);
        MultipleLinearRegression regression = ols.Learn(input, output);
        
        coeff = regression.Weights;

        return coeff;
    }

входы и выходы имеют одинаковую длину, но я получаю это исключение

System.InvalidOperationException : "Матрица имеет недостаточный ранг".


person Nadjib Bendaoud    schedule 11.03.2018    source источник
comment
Проверьте, удовлетворяет ли ваш ввод условиям ЗДЕСЬ.   -  person jsanalytics    schedule 18.03.2018


Ответы (1)


Я только что нашел решение проблемы, это не было проблемой формы ввода, и я не знаю, что именно является причиной исключения матрицы из ранга, но мне удалось заставить его работать, добавив эту строку.

var ols = new OrdinaryLeastSquares();
    {
        ols.UseIntercept = true;
        ols.IsRobust = true;
    };
person Nadjib Bendaoud    schedule 05.04.2018