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.

Précédent
Précédent

Pensées de Pascal (éd. électronique)

Suivant
Suivant

Code en langage PASCAL - réseaux de neurones