> 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/editor.md).

# AISelector

O módulo **AISelector** foi desenvolvido para facilitar a escolha do modelo ideal de inteligência artificial para suas aplicações. Ele automatiza o processo de teste e avaliação de diferentes algoritmos disponíveis no componente, gerando um CSV com métricas como acurácia.

Para utilizar o módulo **AISelector**, é necessário ter conhecimento prévio em inteligência artificial, já que ele foi projetado para usuários que desejam configurar, testar e interpretar os resultados de diferentes modelos manualmente. Caso você não tenha experiência na área, é recomendado o uso do [**EasyAI**](/delphai/documentacao/markdown.md)**.**

No AISelector é possível adicionar vários modelos com diferentes parâmetros e realize o teste de todos com apenas uma função.

#### EXEMPLO DE USO

{% tabs %}
{% tab title="Classificação" %}

<pre><code><strong>uses
</strong>  UAISelector;

procedure ExampleAISelector;
var
  vClassification: TAIClassificationSelector;
begin
  vClassification := TAIClassificationSelector.Create('C:\DelphAI\DelphAI\Datasets\Breast Cancer.csv');
  try
    vClassification.Models.AddKNN(1);
    vClassification.Models.AddKNN(7);
    vClassification.Models.AddKNN(15);
    vClassification.Models.AddKNN(21);
    vClassification.Models.AddTree(5, scGini);
    vClassification.Models.AddNaiveBayes;
    vClassification.RunTests('C:\Example\ClassificationResult.csv', 'C:\Example\ClassificationLog.txt');
  finally
    vClassification.Free;
  end;
end;
</code></pre>

{% endtab %}

{% tab title="Regressão" %}

```
uses
  UAISelector;

procedure ExampleAISelector;
var
  vRegression: TAIRegressionSelector;
begin
  vRegression := TAIRegressionSelector.Create('C:\Users\Felipe\Documents\house_price_menor.csv');
  try
    vRegression.Models.AddKNN(3);
    vRegression.Models.AddKNN(17);
    vRegression.Models.AddKNN(35);
    vRegression.Models.AddLinearRegression;
    vRegression.Models.AddRidge(0.01);
    vRegression.Models.AddRidge(0.1);
    vRegression.Models.AddRidge(1);
    vRegression.Models.AddRidge(10);
    vRegression.Models.AddRidge(100);
    vRegression.RunTests('C:\Example\RegressionResult.csv', 'C:\Example\RegressionLog.txt');
  finally
    vRegression.Free;
  end;
end;
```

{% endtab %}

{% tab title="Recomendação" %}

```
uses
  UAISelector;

procedure ExampleAISelector;
var
  vRecommendation: TAIRecommendationSelector;
begin
  vRecommendation := TAIRecommendationSelector.Create('C:\DelphAI\DelphAI\Datasets\MovieLens-100k\user_item_matrix.csv');
  vRecommendation.Models.AddItemItem(10, TDistanceMode.dmCosine);
  vRecommendation.Models.AddItemItem(10, TDistanceMode.dmEuclidean);
  vRecommendation.Models.AddItemItem(10, TDistanceMode.dmManhattan);
  vRecommendation.Models.AddItemItem(10, TDistanceMode.dmJaccard);
  vRecommendation.Models.AddItemItem(10, TDistanceMode.dmPearson);
  
  vRecommendation.Models.AddUserUser(3, 5, amMode, TDistanceMode.dmCosine);
  vRecommendation.Models.AddUserUser(3, 5, amWeightedAverage, TDistanceMode.dmCosine);
  vRecommendation.Models.AddUserUser(3, 5, amSimpleSum, TDistanceMode.dmCosine);

  vRecommendation.Models.AddUserUser(3, 5, amMode, TDistanceMode.dmEuclidean);
  vRecommendation.Models.AddUserUser(3, 5, amWeightedAverage, TDistanceMode.dmEuclidean);
  vRecommendation.Models.AddUserUser(3, 5, amSimpleSum, TDistanceMode.dmEuclidean);
  
  vRecommendation.RunTestsItemItem('C:\Example\RecItemResultItem.csv', 'C:\Example\RecItemLogItem.txt');
  vRecommendation.RunTestsUserUser('c:\Example\RecUserResultUser.csv', 'c:\Example\RecUserLogUser.txt');
end;
```

{% endtab %}
{% endtabs %}

#### EXEMPLO DE RETORNO

<figure><img src="https://3198896098-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6J08VJbYnoQdumqhRPry%2Fuploads%2FlK9ts3Che0NOSqe2qOok%2Fimage.png?alt=media&amp;token=f107645a-8a73-4c4d-abe9-928bd3a961f7" alt=""><figcaption></figcaption></figure>

#### GUIA DE CLASSES E MÉTODOS

{% tabs %}
{% tab title="Classificação" %}
TAIClassificationSelector

* *constructor Create(aDataset : String; aHasHeader : Boolean = True);* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : caminho do arquivo CSV.
  * *aHasHeader* : indica se tem cabeçalho no arquivo.
* *constructor Create(aDataset : TDataSet); overload;* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : objeto TDataSet que contém os dados que serão usados para treinamento. Veja como deve ser a estrutura [aqui](/delphai/documentacao/base-de-dados/classificacao.md).
* *procedure RunTests(aCsvResultFile, aLogFile : String; aMaxThreads : Integer = 0; aPercDatasetTest : Integer = 25; aRandomDataset : Boolean = True; aCrossValidation : Boolean = True);* : realiza um teste com cada modelo.
  * *aCsvResultFile* : caminho onde será salvo um arquivo CSV contendo cada método testado, junto dos seus resultados.
  * *aLogFile* : caminho do arquivo de log.
  * *aMaxThreads* : opcional, máximo de threads que serão utilizadas simultaneamente. Caso for 0, irá usar a quantidade de threads disponíveis no CPU.
  * *aPercDatasetTest* : percentual da base de dados que será separada para treinamento.
  * *aRandomDataset* : indica se irá escolher aleatóriamente (True) ou se irá pegar as últimas X amostras para teste (False).
  * *aCrossValidation* : indica se utiliza validação cruzada. A quantidade de dataset diferentes gerados para teste será "100 / aPercDatasetTest"

property Models : TAIClassificationModels;

TAIClassificationModels

* *procedure AddKNN(aK : Integer);* : adiciona o modelo de classificação KNN na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo [KNN](/delphai/documentacao/images-and-media/classificacao/knn.md).
* *procedure AddTree(aDepth: Integer; aSplitCriterion: TSplitCriterion);* : adiciona o modelo de classificação Árvore de Decisão na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo [Árvore de decisão](/delphai/documentacao/images-and-media/classificacao/arvore-de-decisao.md).
* *procedure AddNaiveBayes;* : adiciona o modelo de classificação Naive Bayes na lista de modelos que serão testados.
  {% endtab %}

{% tab title="Regressão" %}
TAIRegressionSelector

* *constructor Create(aDataset : String; aHasHeader : Boolean = True);* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : caminho do arquivo CSV.
  * *aHasHeader* : indica se tem cabeçalho no arquivo.
* *constructor Create(aDataset : TDataSet); overload;* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : objeto TDataSet que contém os dados que serão usados para treinamento. Veja como deve ser a estrutura [aqui](/delphai/documentacao/base-de-dados/regressao.md).
* *procedure RunTests(aCsvResultFile, aLogFile : String; aMaxThreads : Integer = 0; aPercDatasetTest : Integer = 25; aRandomDataset : Boolean = True; aCrossValidation : Boolean = True);* : realiza um teste com cada modelo.
  * *aCsvResultModels* : caminho onde será salvo um arquivo CSV contendo cada método testado, junto aos seus resultados.
  * *aLogFile* : caminho do arquivo de log.
  * *aMaxThreads* : opcional, máximo de threads que serão utilizadas simultaneamente. Caso for 0, irá usar a quantidade de threads disponíveis no CPU.
  * *aPercDatasetTest* : percentual da base de dados que será separada para treinamento.
  * *aRandomDataset* : indica se irá escolher aleatóriamente (True) ou se irá pegar as últimas X amostras para teste (False).
  * *aCrossValidation* : indica se utiliza validação cruzada. A quantidade de dataset diferentes gerados para teste será "100 / aPercDatasetTest"

property Models : TAIRegressionModels;

TAIRegressionModels

* *procedure AddKNN(aK : Integer);*  : adiciona o modelo de regressão KNN na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo [KNN](/delphai/documentacao/images-and-media/regressao/knn.md).
* *procedure AddRidge(aAlfa : Double = 1);* : adiciona o modelo de regressão Ridge na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo [Ridge](/delphai/documentacao/images-and-media/regressao/regressao-ridge.md).
* *procedure AddLinearRegression;* : adiciona o modelo de regressão linear na lista de modelos que serão testados.
  {% endtab %}

{% tab title="Recomendação" %}
TAIRecommendationSelector

* *constructor Create(aDataset : String; aHasHeader : Boolean = True);* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : caminho do arquivo CSV.
  * *aHasHeader* : indica se tem cabeçalho no arquivo.
* *constructor Create(aDataset : TDataSet); overload;* : cria o objeto com a base que será usada para treinamento.
  * *aDataSet* : objeto TDataSet que contém os dados que serão usados para treinamento. Veja como deve ser a estrutura [aqui](/delphai/documentacao/base-de-dados/recomendacao.md).
* *procedure RunTestsItemItem(aCsvResultFile, aLogFile : String; aMaxThreads : Integer = 0);* : realiza um teste com cada modelo com base no item.
* *procedure* RunTestsUserUse&#x72;*(aCsvResultFile, aLogFile : String; aMaxThreads : Integer = 0);* : realiza um teste com cada modelo com base no usuário.
  * *aCsvResultModels* : caminho onde será salvo um arquivo CSV contendo cada método testado, junto aos seus resultados.
  * *aLogFile* : caminho do arquivo de log.
  * *aMaxThreads* : opcional, máximo de threads que serão utilizadas simultaneamente. Caso for 0, irá usar a quantidade de threads disponíveis no CPU.
  * *aPercDatasetTest* : percentual da base de dados que será separada para treinamento.

property Models : TAIRecommendationModels;

TAIRecommendationModels

* *procedure AddItemItem(aItemsToRecommendCount : Integer; aDistanceMethod : TDistanceMode = dmManhattan);* : adiciona o modelo de recomendação por item na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo de [recomendação para item](/delphai/documentacao/markdown/recomendacao-para-item.md).
* procedure AddUserUser(aItemsToRecommendCount, aK : Integer; aAggregMethod : TUserScoreAggregationMethod = amWeightedAverage; aDistanceMethod : TDistanceMode = dmManhattan); : adiciona o modelo de recomendação por usuário na lista de modelos que serão testados.
  * Parâmetros conforme create do modelo de [recomendação para usuário](/delphai/documentacao/markdown/recomendacao-para-usuario.md).
    {% endtab %}
    {% endtabs %}
