Imprimir a Equação y = mx + b
Neste passo, você aprenderá a imprimir a equação de regressão linear e prever valores de y usando a inclinação e o intercepto calculados.
Atualize o arquivo linear_regression.c para adicionar a funcionalidade de previsão:
cd ~/project
nano linear_regression.c
Substitua o código anterior pela seguinte implementação:
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 100
typedef struct {
double x;
double y;
} DataPoint;
void computeLinearRegression(DataPoint points[], int num_points, double *m, double *b) {
double sum_x = 0, sum_y = 0, sum_xy = 0, sum_x_squared = 0;
for (int i = 0; i < num_points; i++) {
sum_x += points[i].x;
sum_y += points[i].y;
sum_xy += points[i].x * points[i].y;
sum_x_squared += points[i].x * points[i].x;
}
double n = num_points;
*m = (n * sum_xy - sum_x * sum_y) / (n * sum_x_squared - sum_x * sum_x);
*b = (sum_y - (*m) * sum_x) / n;
}
// Função para prever o valor de y
double predictY(double m, double b, double x) {
return m * x + b;
}
int main() {
DataPoint points[MAX_POINTS];
int num_points = 0;
printf("Digite as coordenadas x e y (digite -1 -1 para finalizar):\n");
while (num_points < MAX_POINTS) {
double x, y;
scanf("%lf %lf", &x, &y);
if (x == -1 && y == -1) {
break;
}
points[num_points].x = x;
points[num_points].y = y;
num_points++;
}
double slope, intercept;
computeLinearRegression(points, num_points, &slope, &intercept);
printf("\nEquação de Regressão Linear:\n");
printf("y = %.4fx + %.4f\n", slope, intercept);
// Imprimir previsões para valores de x de amostra
printf("\nValores de y previstos:\n");
double test_x_values[] = {0, 2.5, 6, 10};
for (int i = 0; i < 4; i++) {
double predicted_y = predictY(slope, intercept, test_x_values[i]);
printf("Quando x = %.2f, y = %.4f\n", test_x_values[i], predicted_y);
}
return 0;
}
Compile o programa:
gcc -o linear_regression linear_regression.c -lm
Execute o programa com pontos de dados de exemplo:
./linear_regression
Saída de exemplo:
Digite as coordenadas x e y (digite -1 -1 para finalizar):
1 2
2 4
3 5
4 4
5 5
-1 -1
Equação de Regressão Linear:
y = 0.6000x + 2.2000
Valores de y previstos:
Quando x = 0.00, y = 2.2000
Quando x = 2.50, y = 3.7000
Quando x = 6.00, y = 5.8000
Quando x = 10.00, y = 8.2000
Pontos-chave sobre a impressão da equação de regressão:
- Adicionamos uma função
predictY() para calcular y para qualquer x dado.
- A função principal imprime a equação completa: y = mx + b.
- Demonstramos a previsão mostrando valores de y para diferentes entradas de x.
- A saída fornece uma visualização clara do modelo de regressão linear.