AIRS
Sistema Imunológico Artificial de Reconhecimento (AIRS)
Esta classe herda de BaseClassifier
Módulo:
aisp.csa
Importação:from aisp.csa import AIRS
Visão geral
O Artificial Immune Recognition System (AIRS) é um algoritmo de classificação inspirado no processo de seleção clonal. Esta implementação é baseada na versão simplificada (AIRS2) descrita em 1. O algoritmo foi adaptado para suportar amostras com características com valores reais (contínuos) e binários (discretos).
Exemplo
import numpy as np
from aisp.csa import AIRS
np.random.seed(1)
# Gerando dados para o treinamento
a = np.random.uniform(high=0.5, size=(50, 2))
b = np.random.uniform(low=0.51, size=(50, 2))
x_train = np.vstack((a, b))
y_train = [0] * 50 + [1] * 50
# Instancia do AIRS
airs = AIRS(n_resources=5, rate_clonal=5, rate_hypermutation=0.65, seed=1)
airs = airs.fit(x_train, y_train, verbose=False)
x_test = [
[0.15, 0.45], # Expected: Class 0
[0.85, 0.65], # Esperado: Classe 1
]
y_pred = airs.predict(x_test)
print(y_pred)
Output:
[0 1]
Parâmetros do Construtor
| Nome | Tipo | Default | Descrição |
|---|---|---|---|
n_resources | float | 10 | Quantidade total de recursos disponíveis. |
rate_clonal | int | 10 | Número máximo de clones possíveis de uma classe. Esta quantidade é multiplicada por (estímulo da célula * rate_hypermutation) para definir o número de clones. |
rate_mc_init | float | 0.2 | Porcentagem de amostras usadas para inicializar a população de células de memória. |
rate_hypermutation | float | 0.75 | Taxa de clones mutados derivada de rate_clonal como um fator escalar. |
affinity_threshold_scalar | float | 0.75 | Limiar de afinidade normalizado. |
k | int | 3 | Número de vizinhos mais próximos (k-NN) que será usado para escolher um rótulo na predição. |
max_iters | int | 100 | Número máximo de interações no processo de refinamento do conjunto ARB exposto a aᵢ. |
resource_amplified | float | 1.0 | Amplificador de consumo de recursos, multiplicado com o estímulo para subtrair recursos. |
metric | str | "euclidean" | Métrica de distância usada para calcular a afinidade entre células e amostras. |
seed | int | None | Seed para geração aleatória. |
p | float | 2 | Este parâmetro é usado na distância de Minkowski. |
Atributos
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
cells_memory | Optional[Dict[str | int, list[BCell]]] | - | Armazena as células de memória por classe. |
Métodos Públicos
fit
def fit(
self,
X: Union[npt.NDArray, list],
y: Union[npt.NDArray, list],
verbose: bool = True,
) -> AIRS:
...
Treina o modelo com os dados de entrada utilizando o algoritmo AIRS2.
A função fit(...), realiza o treinamento de acordo com X e y, usando o método AIRS.
Parâmetros
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
X | Union[npt.NDArray, list] | - | Amostras de entrada para treinamento. Cada linha corresponde a uma amostra e cada coluna a uma característica. |
y | Union[npt.NDArray, list] | - | Vetor alvo no formato (n_samples,). Deve conter o mesmo número de amostras que X. |
verbose | bool | True | Se True, exibe informações sobre o progresso do treinamento. |
Returns
| Tipo | Descrição |
|---|---|
Self | Retorna a instancia da classe. |
Exceções
| Exceção | Descrição |
|---|---|
TypeError | Se X ou y não forem arrays ou tiverem tamanhos incompatíveis. |
predict
def predict(self, X: Union[npt.NDArray, list]) -> npt.NDArray:
...
Prevê os rótulos dos dados de testes com base nas células de memórias criadas durante o treinamento.
Este método utiliza as células de memórias para classificar os dados de entrada usando a abordagem dos k-vizinhos mais próximos (K-NN).
Parâmetros
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
X | Union[npt.NDArray, list] | - | Amostras de entrada. Deve ter o mesmo número de características usadas no treinamento. |
Returns
| Tipo | Descrição |
|---|---|
npt.NDArray | Array no formato n_samples contendo as classes previstas para X. |
Exceções
| Exceção | Descrição |
|---|---|
TypeError | Se X não for um ndarray ou list. |
FeatureDimensionMismatch | Se o número de características em X não corresponder ao esperado. |
ModelNotFittedError | Se o modelo ainda não tiver sido treinado e não possuir o conjunto de células de memoria. |
Exemplos Estendidos
Exemplos completos de uso estão disponíveis nos notebooks Jupyter: