![](https://images.squarespace-cdn.com/content/v1/6321d1a0e854dc2d6d3a2a9c/82702f51-aaf8-4ab7-9989-fbeab1fe5b97/code+pascal+reglog.jpg)
Le langage de programmation PASCAL a été inventé dans les années 1970 - rigoureux, hautement structuré, délibérément pédagogique … à l’image du maître.
Ci-dessous un exemple de code - généré automatiquement par l’IA générative ChatGPT - pour apprendre une régression logistique: le B-A-BA des réseaux de neurone si populaires en intelligence artificielle contemporaine.
program logistic_regression;
const
N = 100; // nombre d'observations
P = 3; // nombre de variables
type
TData = array[1..N, 1..P] of real; // données d'entrée
TCoeff = array[1..P] of real; // coefficients de régression
var
data: TData;
y: array[1..N] of integer; // variables de sortie (1 ou 0)
coeff: TCoeff;
alpha: real; // taux d'apprentissage
num_iter: integer; // nombre d'itérations
function sigmoid(z: real): real;
begin
sigmoid := 1 / (1 + exp(-z));
end;
procedure train(data: TData; y: array of integer; var coeff: TCoeff; alpha: real; num_iter: integer);
var
i, j, k: integer;
z, h, error: real;
delta: array[1..P] of real; // erreur de chaque coefficient
begin
for i := 1 to num_iter do
begin
for j := 1 to N do
begin
z := 0;
for k := 1 to P do
z := z + data[j,k] * coeff[k];
h := sigmoid(z);
error := y[j] - h;
for k := 1 to P do
delta[k] := delta[k] + error * data[j,k];
end;
for k := 1 to P do
coeff[k] := coeff[k] + alpha * delta[k];
end;
end;
function predict(data: TData; coeff: TCoeff; threshold: real): array of integer;
var
i, j: integer;
z: real;
begin
SetLength(predict, N);
for i := 1 to N do
begin
z := 0;
for j := 1 to P do
z := z + data[i,j] * coeff[j];
if sigmoid(z) >= threshold then
predict[i] := 1
else
predict[i] := 0;
end;
end;
begin
// initialisation des données
// ...
// initialisation des coefficients
coeff[1] := 0.5;
coeff[2] := -0.2;
coeff[3] := 0.1;
// entraînement de la régression logistique
alpha := 0.01;
num_iter := 1000;
train(data, y, coeff, alpha, num_iter);
// prédiction avec un seuil de 0.5
y := predict(data, coeff, 0.5);
end.