> 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/images-and-media/classificacao/naive-bayes.md).

# Naive Bayes

O Naive Bayes é um modelo baseado no Teorema de Bayes, que utiliza probabilidades para realizar classificações. Ele assume que as características do dado são independentes entre si, o que simplifica os cálculos e torna o modelo rápido e eficiente. Apesar dessa suposição de independência nem sempre ser verdadeira, o Naive Bayes apresenta bons resultados em muitos problemas práticos, como classificação de textos e filtragem de spam. Seu desempenho é notável em aplicações onde os dados podem ser interpretados probabilisticamente.

O treinamento do modelo é rápido, após o treinamento não é necessário a base de dados para realizar predições. É possível salvar e importar o treinamento finalizado em um arquivo extremamente leve.

#### EXEMPLO DE USO

```
uses
  UNaiveBayes;
  
procedure ExampleNaiveBayes;
var
  vNaiveB: TGaussianNaiveBayes;
begin
  vNaiveB := TGaussianNaiveBayes.Create;
  try
    vNaiveB.Train('C:\Delphai\Delphai\Datasets\Iris.csv', False);
    ShowMessage(vNaiveB.Predict([6.3, 3.3, 4.7, 1.6]));
  finally
    vNaiveB.Free;
  end;
end;
```

#### GUIA DE CLASSES E MÉTODOS

TGaussianNaiveBayes

* *FDataset : TAIDatasetClassification;* : acessa a base de dados atual contido no modelo.
* *procedure ClearDataset;* : limpa a base de dados.
* *constructor Create;* : cria um novo objeto para ser treinado.
* *constructor Create(aTrainedFile : String); overload;* : cria o objeto carregando a estrutura de um arquivo já treinado.
* *procedure Train(aTrainingData : String; aHasHeader : Boolean = True); overload;* : realiza o treinamento com os dados passados.
  * *aTrainingData* : caminho do arquivo CSV.
  * *aHasHeader* : indica se tem cabeçalho no arquivo.
* *procedure Train(aTrainingData : TDataSet); overload;* : realiza o treinamento e gera os nós com base nos dados passados.
  * *aTrainingData* : objeto TDataSet que contém os dados que serão usados para treinamento.
* *function Predict(aSample: TArray\<Double>; aInputNormalized : Boolean = False): String;* : prevê a melhor categoria para a amostra.
  * *aSample* : amostra a ser analisada.
  * *aInputNormalized* : deve ser passado como true somente se os dados da entrada já foram normalizadas por fora do componente (o que deve ser feito utilizando o range salvo no objeto).
* *procedure LoadFromFile(const FileName: string);* : carrega o arquivo treinado.
* *procedure SaveToFile(const FileName: string);* : salva o arquivo treinado.
