0

2 次元座標系で指定されたポイント サンプルのセットに基づいて、次のポイントを予測する必要があります。

このような予測には、ベストフィット直線法を使用しています。

Best-Fit Straight Line 以外の方法があれば教えてください。

私のコードは以下の通りです:

public class LineEquation
{
    public double m; //slope
    public double c;  //constant  in y=mx+c
}
public class Point
{
    public double x;
    public double y;
}

public class BestFitLine
{
    public Point[] points = new Point[7];

    public void InputPoints(Point[] points)
    {

        for (int i = 0; i < points.Length; i++)
        {
            points[i] = new Point();
        }

        points[0].x = 12;
        points[0].y = 13;

        points[1].x = 22;
        points[1].y = 23;


        points[2].x = 32;
        points[2].y = 33;


        points[3].x = 42;
        points[0].y = 23;


        points[4].x = 52;
        points[4].y = 33;


        points[5].x = 62;
        points[5].y = 63;

        points[6].x = 72;
        points[6].y = 63;



    }

    public LineEquation CalculateBestFitLine(Point[] points)
    {
        double constant = 0;
        double slope=0;
        for (int i = 0; i < points.Length - 1; i++)
        {
            for (int j = i + 1; j < points.Length; j++)
            {

                double m = (points[j].y - points[i].y) / (points[j].x - points[i].x);
                double c = points[j].y - (m * points[j].x);
                constant += c;
                slope += m;
            }
        }
        int lineCount =((points.Length-1)*points.Length)/2;

        slope = slope / lineCount;
        constant = constant / lineCount;
        LineEquation eq = new LineEquation();
        eq.c = constant;
        eq.m = slope;
        return eq;

    }}
4

2 に答える 2

0

近い将来のデータポイントを予測するために、指数移動平均のような平滑化アルゴリズムを検討できると思います。

http://en.wikipedia.org/wiki/Exponential_smoothing

于 2013-07-17T12:25:10.120 に答える