Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
68
Task/Multiple-regression/Ada/multiple-regression-3.adb
Normal file
68
Task/Multiple-regression/Ada/multiple-regression-3.adb
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
with Ada.Text_IO;
|
||||
with Matrices;
|
||||
procedure Multiple_Regression is
|
||||
package Float_Matrices is new Matrices (
|
||||
Element_Type => Float,
|
||||
Zero => 0.0,
|
||||
One => 1.0);
|
||||
subtype Vector is Float_Matrices.Vector;
|
||||
subtype Matrix is Float_Matrices.Matrix;
|
||||
use type Matrix;
|
||||
|
||||
procedure Output_Matrix (X : Matrix) is
|
||||
begin
|
||||
for Row in X'Range (1) loop
|
||||
for Col in X'Range (2) loop
|
||||
Ada.Text_IO.Put (Float'Image (X (Row, Col)) & ' ');
|
||||
end loop;
|
||||
Ada.Text_IO.New_Line;
|
||||
end loop;
|
||||
end Output_Matrix;
|
||||
|
||||
-- example from Ruby solution
|
||||
V : constant Vector := (1.0, 2.0, 3.0, 4.0, 5.0);
|
||||
M : constant Matrix :=
|
||||
((1 => 2.0),
|
||||
(1 => 1.0),
|
||||
(1 => 3.0),
|
||||
(1 => 4.0),
|
||||
(1 => 5.0));
|
||||
C : constant Vector :=
|
||||
Float_Matrices.Regression_Coefficients (Source => V, Regressors => M);
|
||||
-- Wikipedia example
|
||||
Weight : constant Vector (1 .. 15) :=
|
||||
(52.21, 53.12, 54.48, 55.84, 57.20,
|
||||
58.57, 59.93, 61.29, 63.11, 64.47,
|
||||
66.28, 68.10, 69.92, 72.19, 74.46);
|
||||
Height : Vector (1 .. 15) :=
|
||||
(1.47, 1.50, 1.52, 1.55, 1.57,
|
||||
1.60, 1.63, 1.65, 1.68, 1.70,
|
||||
1.73, 1.75, 1.78, 1.80, 1.83);
|
||||
Height_Matrix : Matrix (1 .. 15, 1 .. 3);
|
||||
begin
|
||||
Ada.Text_IO.Put_Line ("Example from Ruby solution:");
|
||||
Ada.Text_IO.Put_Line ("V:");
|
||||
Output_Matrix (Float_Matrices.To_Matrix (V));
|
||||
Ada.Text_IO.Put_Line ("M:");
|
||||
Output_Matrix (M);
|
||||
Ada.Text_IO.Put_Line ("C:");
|
||||
Output_Matrix (Float_Matrices.To_Matrix (C));
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put_Line ("Example from Wikipedia:");
|
||||
for I in Height'Range loop
|
||||
Height_Matrix (I, 1) := 1.0;
|
||||
Height_Matrix (I, 2) := Height (I);
|
||||
Height_Matrix (I, 3) := Height (I) ** 2;
|
||||
end loop;
|
||||
Ada.Text_IO.Put_Line ("Matrix:");
|
||||
Output_Matrix (Height_Matrix);
|
||||
declare
|
||||
Coefficients : constant Vector :=
|
||||
Float_Matrices.Regression_Coefficients
|
||||
(Source => Weight,
|
||||
Regressors => Height_Matrix);
|
||||
begin
|
||||
Ada.Text_IO.Put_Line ("Coefficients:");
|
||||
Output_Matrix (Float_Matrices.To_Matrix (Coefficients));
|
||||
end;
|
||||
end Multiple_Regression;
|
||||
Loading…
Add table
Add a link
Reference in a new issue