2012-05-15 8 views
3

Я начинаю один из моих первых проектов C# - нужно найти кривую, подходящую для нескольких точек данных x-y.C# Численная полиномиальная регрессия

Например:

х: 1,2,3,4,5,6 у: 0.5,5,0.5,2.5,5,0.5

Как это происходит, собственно кривая подгонки Мне нужно, чтобы эти точки были полиномом шестого порядка, согласно excel.

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

Я новичок в C# и мало знаю об интеграции аппаратного и программного обеспечения.

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

Любые советы/указатели очень оценили.

вход будет дано шесть х-у координаты ...

Проблема № 1: Как я пишу полином дал шесть координат?

+0

С какой целью у вас проблемы? – SQLMason

+0

Ха-ха. Прости, Дэн. Проблема №1: Полиномиальная регрессия ... –

+0

Я не сделал -1. Вы должны посмотреть, как сделать регрессию, и если у вас есть определенная проблема с вашим кодом, отправьте его по предложениям. Похоже, вы просто просите кого-нибудь написать его для вас. – SQLMason

ответ

3

Задача нахождения коэффициентов полинома заданной п точек оценена при определенных х я известен как полиномиальная задача интерполяции. Вы можете прочитать подробную информацию о проблеме и ее решениях here (wikipedia.org).

Вы должны обратить пристальное внимание на раздел Построение интерполяционного полинома, где они упоминают, что матрица необходимо инвертировать может вводить большие ошибки при использовании метода исключения Гаусса, и проверить Newton interpolation (wikipedia.org) для лучший подход. Это, вероятно, не имеет большого значения только для шести пунктов, но об этом стоит знать.

Что касается реализации, у вас есть два варианта: использовать стороннюю библиотеку с поддержкой линейной алгебры - например, Science Code .Net (sciencecode.com) или начать писать некоторые базовые абстракции для векторов и матриц и реализовать основные операции таких как умножение, сложение и инверсия. В тот же день мы использовали библиотеку «Numerical Recipes in C», и у них вполне может быть порт для C#. Возможно, стоит проверить.

+0

Точно трек, который мне нужно начинать ... –

+0

@KevinBrown Приятно слышать. Я отредактировал ответ со ссылкой на библиотеку, которую вы можете использовать. – vhallac

+0

Lagrange Interpolation, я нашел, был именно тем, что мне нужно для выполнения этой работы ... –

0

Похоже, вы серьезно overfitting, если вы считаете, что полином шестого порядка лучше всего подходит для шести точек данных, и мне любопытно, если вы на самом деле имеете в виду, что у вас будет только шесть точек в фактических данных (в этом случае фитинг не имеет смысла) или что у вас есть только шесть выборочных точек и, как ожидается, предсказать фактическую форму данных.

https://www.coursera.org/course/ml имеет отличный класс для машинного обучения, более конкретно релевантный, поскольку он учит о правильном выборе правильного порядка полинома, разбиении данных и более фундаментальных аспектах, таких как математическая матрица, которые лежат в основе всего этого.

Это не то, что вы можете указать на «алгоритм X» и надеяться, что это выйдет правильно ... курс ML охватывает множество ошибок, совершаемых людьми (над подгонкой, под монтаж, плохие данные выборка и т. д.) при установке на данные. В нем также обсуждается, как их избежать.

+0

Не перерабатывая ... это упрощенная модель вихретоковой индукции. –

+0

Ах, поэтому вы не являетесь данными для отбора проб, что делает мой ответ неправильным. – Godeke

+0

Хмммм ... Мы в конце концов будем отбирать выборку ... так что, возможно, с тобой все в порядке. ;) –

 Смежные вопросы

  • Нет связанных вопросов^_^