Баг в инверсии матриц

В библиотеке для машинного обучения, которую сейчас пишу, кажется, косяк в расчете инверсии для матрицы. Очень странно. Может быть, буду искать баг, а может и забью. Может быть, как-нибудь потом поразбираюсь дальше… Может быть, какие-то особенности инверсии, которые я не знаю. Хотя странно очень — раньше не наблюдались проблемы… Как бы то ни было — начинаю разбирать F#. Для работы с матрицами, пожалуй, буду использовать не свою библиотеку (просто для верности и из нежелания искать баг в инверсии, если дело вообще в ней). В общем-то, свою цель библиотека частично выполнила — я разобрал основы работы с матрицами и написал несколько методов регрессии… По большому счету — на этом можно и остановиться в разработке этой библиотеки. Хотя… хз…

Парная регрессия — параболы второго, третьего и пр порядка

В библиотеку машинного обучения добавил еще одну регрессию — парную регрессию n-порядка. Класс ВОТ ТУТ. Формат использования такой же, как и у других регрессий. Вот пример:

Matrix mParabolaRegression = Matrix.GetMatrixFromTXT("data\\parabola_regression.txt", '\t');
            NOrderSimpleParabolaRegression nospr = new NOrderSimpleParabolaRegression();
            Matrix z = nospr.GetRegressionCoefficients(mParabolaRegression, 2);
            double yVal = nospr.GetYForVectorX(z, 84.0);

GetMatrixFromTXT — статический метод получения матрицы из файла. Указывается путь к файлу и разделитель столбцов.

Далее создается объект парной регрессии параболы n-порядка.

Далее получаем коэффициенты для формулы расчета зависимой переменной y: y = a + bx + cx^2

Используя коэффициенты рассчитываем y для заданного предиктора x:

double yVal = nospr.GetYForVectorX(z, 84.0);

То есть в примере ищем y для x = 84.

Множественная линейная регрессия на C#

Поскольку на прошлой неделе сделал реализацию работу с матрицами на c# — самое время ими воспользоваться. Собственно, пока что сделал только множественную линейную регрессию. Класс для работы с ней находится ВОТ ТУТ.

Для начала создаем объект множественной линейной регрессии: Читать далее Множественная линейная регрессия на C#

Простая линейная регрессия на C#

Как уже писал, занимаюсь освоением самых- самых основ machine learning. В курсах и литературе по ML обычно начинают с простой линейной регрессии. Предварительно обучив по массиву значений одной независимой переменной (X) и массиву значений зависимой от ней второй переменной (Y), можно для какого-либо x получить предположительное y. Например, по росту предположить вес.

Код написал на c#. Он находится на гитхабе — ВОТ ТУТ . Это библиотека, в которой на настоящий момент нет ничего, кроме класса простой линейной регрессии 🙂 Читать далее Простая линейная регрессия на C#