Accord .Net for iOS in Unity 3D v2021.3.1

41 Views Asked by At

I am working on a Prediction Model using Accord .Net in Unity 3D for iOS. I have a csv data from Kaggle I manage to run and get prediction value as 0 and 1 in Unity Editor.

Here is the code

using System;
using System.Collections.Generic;
using System.Linq;
using Accord.MachineLearning.VectorMachines;
using Accord.MachineLearning.VectorMachines.Learning;
using Accord.Statistics.Kernels;
using UnityEngine;
using TMPro;

public class MachineStatusPredictor : MonoBehaviour
{
    public TextAsset csvFile;
    private List<double[]> features = new List<double[]>();
    private List<int> machineStatusLabels = new List<int>();
    private SupportVectorMachine<Gaussian> machineStatusClassifier;
    public TMP_Text statusText;

    void Start()
    {
        LoadAndPreprocessData(csvFile.text);
        TrainMachineStatusClassifier();

        // Example: Predict and display machine status using sample sensor data
        double[] sampleSensorData = new double[] { 2f, 1.2f, 2.3f, 2.1f, 2, 4f }; // Sample sensor data
        int predictedStatus = PredictMachineStatus(sampleSensorData);
        Debug.Log($"Predicted Machine Status: {predictedStatus}");
        statusText.text = predictedStatus.ToString();
    }

    void LoadAndPreprocessData(string csvText)
    {
        string[] lines = csvText.Split('\n');

        for (int i = 1; i < lines.Length; i++)
        {
            string[] values = lines[i].Split(',');
            if (values.Length >= 6) 
            {
                double[] sensorValues = values.Skip(1).Take(3).Select(v =>
                {
                    double parsedValue;
                    if (double.TryParse(v, out parsedValue))
                    {
                        return parsedValue;
                    }
                    else
                    {
                        return 0.0;
                    }
                }).ToArray();

                features.Add(sensorValues);

                int label = values[values.Length - 1] == "NORMAL" ? 0 : 1;
                machineStatusLabels.Add(label);
            }
        }
    }

    void TrainMachineStatusClassifier()
    {
        double[][] inputs = features.ToArray();
        int[] outputs = machineStatusLabels.ToArray();

        var teacher = new SequentialMinimalOptimization<Gaussian>()
        {
            Complexity = 100 
        };

        machineStatusClassifier = teacher.Learn(inputs, outputs);
    }

    int PredictMachineStatus(double[] sensorData)
    {
        bool prediction = machineStatusClassifier.Decide(sensorData);
        int predictedStatus = prediction ? 1 : 0;
        return predictedStatus;
    }
}

But I am not able to build it for iOS. I mean, I am able to build it successfully from Unity but after opening in xcode project its not building. Showing this error

enter image description here

I am using Accord .Net 3.8.0 libsonly as mentioned on their github page.

There are so many DLL versions in this libsonly archive. I tried most of them but no luck.

0

There are 0 best solutions below