Executando verificação de segurança...
13

Implementando em Python

Temos uma função do tipo y = a.x + b e como vimos no artigo acima, podemos calcular os coeficientes a e b utilizando um pouco de matemática.

Eu utilizei a função mean do módulo numpy pois me poupou umas 3 linhas a cada vez que precisei calcular a média. Você pode importá-la da seguinte forma:

from numpy import mean

Conforme os dados fictícios do artigo acima.

x = [1, 2, 3, 4, 5]
y = [3, 7, 5, 11, 14]

Podemos em um primeiro momento nos preocupar com o cálculo do coeficiente a. A função descrita abaixo tem esse papel; calculando o somatório da diferença entre o xi e a média através de um laço for.

def calculate_a(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    numerador = denominador = 0
    
    for xi, yi in zip(x, y):
        numerador += (xi - x_mean) * (yi - y_mean)
    for xi in x:
        denominador += (xi - x_mean)**2

    a = numerador / denominador
    
    return a

De maneira similar, podemos calcular o b implementando a fórmula descrita no artigo acima.

def calculate_b(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    a = calculate_a(x, y)
    
    b = y_mean - a * x_mean
    
    return b

A seguir, o código completo, com um input para um X qualquer e um print que escreve na tela a previsão conforme o ajuste linear.

# y = ax + b
from numpy import mean

def calculate_a(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    numerador = denominador = 0
    
    for xi, yi in zip(x, y):
        numerador += (xi - x_mean) * (yi - y_mean)
    for xi in x:
        denominador += (xi - x_mean)**2

    a = numerador / denominador
    
    return a

def calculate_b(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    a = calculate_a(x, y)
    
    b = y_mean - a * x_mean
    
    return b
    
 
x = [1, 2, 3, 4, 5]
y = [3, 7, 5, 11, 14]

a = calculate_a(x, y)
b = calculate_b(x, y)

X = float(input("Quantidade de veneno: "))

result = a * X + b

print(f'Essa quantidade matou {round(result)} bactérias.')

Considerações finais

Muito obrigado pelo conteúdo, Leodeymison. Mal posso esperar pelo próximo artigo sobre regressão linear múltipla.

Peço que você, leitor, implemente em uma liguagem diferente para que possamos ver como fica.

Carregando publicação patrocinada...
2