# 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.

