> For the complete documentation index, see [llms.txt](https://delphai.gitbook.io/delphai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://delphai.gitbook.io/delphai/documentacao/markdown/regressao.md).

# Regressão

Métodos de regressão são maneiras de usar aprendizado de máquina, matemática e estatística para encontrar relações entre coisas. O objetivo é fazer previsões de números, como estimar o preço de algo ou prever um valor futuro.

Por exemplo, imagine que você quer prever o preço de uma casa. Para isso, você pode usar informações como o tamanho da casa, o número de quartos e se está bem localizada. Com esses dados, os métodos de regressão ajudam a calcular o valor mais provável da casa.

#### EXEMPLO DE USO

É possível replicar o exemplo acima com poucas linhas. Para gerar o arquivo com todas as configurações necessárias para utilizar posteriormente:

```
uses
  UEasyAI;
  
procedure TrainModel;
var
  vEasyAIClass: TEasyAIRegression;
begin
  vEasyAIClass := TEasyAIRegression.Create;
  try
    vEasyAIClass.LoadDataset('C:\DelphAI\DelphAI\Datasets\Housing Price.csv');
    vEasyAIClass.FindBestModel('C:\Example\trainedFile-Housing-price');
  finally
    vEasyAIClass.Free;
  end;
end;
```

Ao concluir a procedure "FindBestModel", será criado o arquivo no diretório passado por parâmetro e uma mensagem de alerta será exibida, avisando se é necessário ou não carregar novamente o database antes do uso.

Para utilizar o modelo a partir do arquivo gerado:

<pre><code><strong>uses
</strong>  UEasyAI;
  
procedure ShowPredictedHousesPrice;
var
  vEasyAIClass: TEasyAIRegression;
begin
  vEasyAIClass := TEasyAIRegression.Create;
  try
    vEasyAIClass.LoadDataset('C:\DelphAI\DelphAI\Datasets\Housing Price.csv'); // Só é necessário se foi alertado que o melhor modelo precisa do dataset.
    vEasyAIClass.LoadFromFile('C:\Example\trainedFile-Housing-price');
    // To predict a house with the same properties the model was trained on:
    // Square_Footage = 1
    // Num_Bedrooms = 1
    // Num_Bathrooms = 1
    // Year_Built = 1964
    // Lot_Size = 3.1047807561601664
    // Garage_Size = 0
    // Neighborhood_Quality = 4
    ShowMessage('House price: ' + FormatCurr('##0.00', vEasyAIClass.Predict([2459, 1, 1, 1964, 3.1047807561601664, 0, 4])));
  finally
    vEasyAIClass.Free;
  end;
end;
</code></pre>

A estrutura da base de dados pode ser encontrado [aqui](/delphai/documentacao/base-de-dados/regressao.md).

#### GUIA DE CLASSES E MÉTODOS

TEasyAIRegression

* *constructor Create;* : cria o objeto.
* *procedure LoadDataset(aDataSet : String; aHasHeader : Boolean = True);* : carrega a base de dados para treinamento ou uso nos modelos que necessitam.
  * *aDataSet* : caminho do arquivo CSV.
  * *aHasHeader* : indica se tem cabeçalho no arquivo.
* *procedure LoadDataset(aDataSet : TDataSet);* : carrega a base de dados para treinamento ou uso nos modelos que necessitam.
  * *aDataSet* : objeto TDataSet que contém os dados que serão usados para treinamento.
* *procedure FindBestModel(aPathResultFile: String; aMode : TEasyTestingMode = tmStandard; aMaxThreads : Integer = 0; aCsvResultModels : String = ''; aLogFile : String = '');* : testa várias opções de modelos para encontrar e preparar o melhor dentre eles para ser usado nas predições.
  * *aPathResultFile* : caminho onde salva as configurações do modelo encontrado, antes do uso basta usá-lo para preparar todo o objeto para predições.
  * *aMode* : modo de pesquisa se será realizada, tendo 3 opções:
    * *tmFast* : testa somente os prováveis melhores modelos. É o modo mais rápido;
    * *tmStandard* : testa os prováveis melhores modelos, além de explorar parâmetros mais extremos;
    * *tmExtensive* : testa um grande número de modelos, incluindo o dos outros métodos. É o modo mais demorado.
  * *aMaxThreads* : opcional, máximo de threads que serão utilizadas simultaneamente. Caso for 0, irá usar a quantidade de threads disponíveis no CPU.
  * *aCsvResultModels* : opcional, caminho onde será salvo um arquivo CSV contendo cada método testado, junto aos seus resultados.
  * *aLogFile* : opcional, caminho do arquivo de log.
* *procedure LoadFromFile(aPath : String);* : carrega o arquivo gerado no "FindBestModel" para criar e preparar o uso do melhor modelo encontrado.
* *function Predict(aSample : TArray\<Double>) : Double;* : prevê o valor da amostra.
  * *aSample* : amostra a ser analisada. Exemplo, se o modelo foi treinado com 5 colunas de propriedades + 1 do resultado, agora deve ser passado apenas o array com o valor das 5 propriedades.
