void RegressionPredict(IntPtr model)
    {
        Debug.Log("Predict Model");

        foreach (var testSpheresTransform in testSpheresTransforms)
        {
            double [] inputs = new double[2];
            inputs[0] = testSpheresTransform.position.x;
            inputs[1] = testSpheresTransform.position.z;

            double result = VisualStudioLibWrapper.linear_model_predict_regression(model, inputs, inputs.Length);

            testSpheresTransform.position = new Vector3(
                testSpheresTransform.position.x,
                (float)result,
                testSpheresTransform.position.z
                );

            Debug.Log("Result Predict Model =  " + result);
        }

        //double[] inputs = input_array.ToArray();

        // Debug.Log("Taille tableau d'inputs  " + inputs.Length);
        //double result = VisualStudioLibWrapper.linear_model_predict_regression(model, inputs, inputs.Length);
        //Debug.Log("Result Predict Model =  " + result);
    }
Example #2
0
    public unsafe void TrainAndTest()
    {
        Debug.Log("Training and Testing");

        var    Y = new double[trainSpheresTransforms.Length];
        IntPtr model;

        var linear_inputs = new double[trainSpheresTransforms.Length * 2];

        for (int i = 0; i < trainSpheresTransforms.Length; i++)
        {
            var position = new Vector3();
            if (transfo != -1)
            {
                position = AppliTransfo(trainSpheresTransforms[i].position);
            }
            else
            {
                position = trainSpheresTransforms[i].position;
            }
            Y[i] = position.y;
            linear_inputs[i * 2]       = position.x;
            linear_inputs[(i * 2) + 1] = position.z;
        }

        // Create Model
        model = VisualStudioLibWrapper.linear_model_create(2);
        // Train Model
        VisualStudioLibWrapper.linear_model_train_regression(model, linear_inputs, trainSpheresTransforms.Length, 2, Y, Y.Length, 1000000, 0.01f);

        // For each testSphere : Predict
        foreach (var testSpheres in testSpheresTransforms)
        {
            var position = new Vector3();
            if (transfo != -1)
            {
                position = AppliTransfo(testSpheres.position);
            }
            else
            {
                position = testSpheres.position;
            }
            double[] input = { position.x, position.z };
            float    y     = (float)VisualStudioLibWrapper.linear_model_predict_regression(model, input, 2);
            testSpheres.position = new Vector3(
                position.x,
                y,
                position.z
                );
        }
    }