Funcionamento do Analysis

Autor: felipe 73 visualizações

Analysis

A classe Analysis é responsável por fazer uma análise dos dados, sendo possível utilizar modelos de aprendizado de máquina para identificar o tipo de movimento feito, pontuação do movimento comparando com a base histórica para acompanhar a evolução do paciente, entre outras possibilidades.

Foi utilizado o padrão de projeto comportamental Strategy, porque várias classes relacionadas diferem apenas em seus comportamentos e é necessário variantes dos algoritmos de aprendizado de máquina no framework.
A classe IMachineLearning declara uma interface que é comum a todos os algoritmos de aprendizado de máquina, ela declara um método que o contexto da aplicação utiliza para executar uma estratégia.

				
					namespace StrategyDesignPattern
{
    public interface IMachineLearning
    {
        // Interface for methods
        public void ExecuteMachineLearning(string data);
    }
}				
			

Cada classe concreta deve implementar o método ExecuteMachineLearning da interface IMachineLearning, conforme os códigos abaixos eles necessitam do desenvolvedor implementar de acordo com a sua necessidade. Caso ocorra a necessidade de ter mais algoritmos é só ir adicionando novas classes concretas que implementem a interface supracitada. O método ExecuteMachineLearning recebe uma string com os dados para que seja processado. Assim, a classe concreta implementa diferentes variações de um algoritmo que o contexto da aplicação necessitar.

				
					using UnityEngine;

namespace StrategyDesignPattern
{
    public class Algorithm1 : IMachineLearning
    {
        // Implement Algorithm 1
        public void ExecuteMachineLearning(string data)
        {
            Debug.Log("Data: '" + data);
        }
    }
}				
			
				
					using UnityEngine;

namespace StrategyDesignPattern
{
    public class Algorithm2 : IMachineLearning
    {
        // Implement Algorithm 2
        public void ExecuteMachineLearning(string data)
        {
            Debug.Log("Data: '" + data);
        }
    }
}				
			

A classe Context contém uma propriedade que é usada para conter a referência de um objeto strategy. Esta propriedade é ajustada pelo ClientML de acordo com o algoritmo de aprendizado de máquina necessário.

				
					namespace StrategyDesignPattern
{
    // Strategy Pattern Context
    public class Context
    {
        private IMachineLearning ml;

        public Context(IMachineLearning ml)
        {
            this.ml = ml;
        }

        public void SetStrategy(IMachineLearning ml)
        {
            this.ml = ml;
        }

        public void ExecuteMachineLearning(string data)
        {
            ml.ExecuteMachineLearning(data);
        }
    }
}				
			

A classe ClientML cria um objeto strategy específico e passa para o contexto. O contexto define um setter que permite o ClientML alterar a estrategia associada com o contexto durante a execução.

				
					using UnityEngine;

namespace StrategyDesignPattern
{
    public class ClientML : MonoBehaviour
    {
        // Start is called before the first frame update
        // Start method 1 and 2 - ML
        void Start()
        {
            Context ctx = new Context(new Method1());
            ctx.ExecuteMachineLearning("data1");
            ctx.SetStrategy(new Method2());
            ctx.ExecuteMachineLearning("data2");
        }
    }
}				
			
Nesta página