Scikit.Classification.ONNX/Iris.mqh

230 lines
10 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:23:21 +02:00
//+------------------------------------------------------------------+
//| Iris.mqh |
//| Copyright 2023, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link "https://www.mql5.com"
//+------------------------------------------------------------------+
//| Structure for the IRIS Dataset sample |
//+------------------------------------------------------------------+
struct sIRISsample
{
int sample_id; // sample id (1-150)
double features[4]; // SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm
string class_name; // class ("Iris-setosa","Iris-versicolor","Iris-virginica")
int class_id; // class id (0,1,2), calculated by function IRISClassID
};
//--- Iris dataset
sIRISsample ExtIRISDataset[];
int Exttotal=0;
//+------------------------------------------------------------------+
//| Returns class id by class name |
//+------------------------------------------------------------------+
int IRISClassID(string class_name)
{
//---
if(class_name=="Iris-setosa")
return(0);
else
if(class_name=="Iris-versicolor")
return(1);
else
if(class_name=="Iris-virginica")
return(2);
//---
return(-1);
}
//+------------------------------------------------------------------+
//| AddSample |
//+------------------------------------------------------------------+
bool AddSample(const int Id,const double SepalLengthCm,const double SepalWidthCm,const double PetalLengthCm,const double PetalWidthCm, const string Species)
{
//---
ExtIRISDataset[Exttotal].sample_id=Id;
//---
ExtIRISDataset[Exttotal].features[0]=SepalLengthCm;
ExtIRISDataset[Exttotal].features[1]=SepalWidthCm;
ExtIRISDataset[Exttotal].features[2]=PetalLengthCm;
ExtIRISDataset[Exttotal].features[3]=PetalWidthCm;
//---
ExtIRISDataset[Exttotal].class_name=Species;
ExtIRISDataset[Exttotal].class_id=IRISClassID(Species);
//---
Exttotal++;
//---
return(true);
}
//+------------------------------------------------------------------+
//| Prepare Iris Dataset |
//+------------------------------------------------------------------+
bool PrepareIrisDataset(sIRISsample &iris_samples[])
{
ArrayResize(ExtIRISDataset,150);
Exttotal=0;
//---
AddSample(1,5.1,3.5,1.4,0.2,"Iris-setosa");
AddSample(2,4.9,3.0,1.4,0.2,"Iris-setosa");
AddSample(3,4.7,3.2,1.3,0.2,"Iris-setosa");
AddSample(4,4.6,3.1,1.5,0.2,"Iris-setosa");
AddSample(5,5.0,3.6,1.4,0.2,"Iris-setosa");
AddSample(6,5.4,3.9,1.7,0.4,"Iris-setosa");
AddSample(7,4.6,3.4,1.4,0.3,"Iris-setosa");
AddSample(8,5.0,3.4,1.5,0.2,"Iris-setosa");
AddSample(9,4.4,2.9,1.4,0.2,"Iris-setosa");
AddSample(10,4.9,3.1,1.5,0.1,"Iris-setosa");
AddSample(11,5.4,3.7,1.5,0.2,"Iris-setosa");
AddSample(12,4.8,3.4,1.6,0.2,"Iris-setosa");
AddSample(13,4.8,3.0,1.4,0.1,"Iris-setosa");
AddSample(14,4.3,3.0,1.1,0.1,"Iris-setosa");
AddSample(15,5.8,4.0,1.2,0.2,"Iris-setosa");
AddSample(16,5.7,4.4,1.5,0.4,"Iris-setosa");
AddSample(17,5.4,3.9,1.3,0.4,"Iris-setosa");
AddSample(18,5.1,3.5,1.4,0.3,"Iris-setosa");
AddSample(19,5.7,3.8,1.7,0.3,"Iris-setosa");
AddSample(20,5.1,3.8,1.5,0.3,"Iris-setosa");
AddSample(21,5.4,3.4,1.7,0.2,"Iris-setosa");
AddSample(22,5.1,3.7,1.5,0.4,"Iris-setosa");
AddSample(23,4.6,3.6,1.0,0.2,"Iris-setosa");
AddSample(24,5.1,3.3,1.7,0.5,"Iris-setosa");
AddSample(25,4.8,3.4,1.9,0.2,"Iris-setosa");
AddSample(26,5.0,3.0,1.6,0.2,"Iris-setosa");
AddSample(27,5.0,3.4,1.6,0.4,"Iris-setosa");
AddSample(28,5.2,3.5,1.5,0.2,"Iris-setosa");
AddSample(29,5.2,3.4,1.4,0.2,"Iris-setosa");
AddSample(30,4.7,3.2,1.6,0.2,"Iris-setosa");
AddSample(31,4.8,3.1,1.6,0.2,"Iris-setosa");
AddSample(32,5.4,3.4,1.5,0.4,"Iris-setosa");
AddSample(33,5.2,4.1,1.5,0.1,"Iris-setosa");
AddSample(34,5.5,4.2,1.4,0.2,"Iris-setosa");
AddSample(35,4.9,3.1,1.5,0.2,"Iris-setosa");
AddSample(36,5.0,3.2,1.2,0.2,"Iris-setosa");
AddSample(37,5.5,3.5,1.3,0.2,"Iris-setosa");
AddSample(38,4.9,3.6,1.4,0.1,"Iris-setosa");
AddSample(39,4.4,3.0,1.3,0.2,"Iris-setosa");
AddSample(40,5.1,3.4,1.5,0.2,"Iris-setosa");
AddSample(41,5.0,3.5,1.3,0.3,"Iris-setosa");
AddSample(42,4.5,2.3,1.3,0.3,"Iris-setosa");
AddSample(43,4.4,3.2,1.3,0.2,"Iris-setosa");
AddSample(44,5.0,3.5,1.6,0.6,"Iris-setosa");
AddSample(45,5.1,3.8,1.9,0.4,"Iris-setosa");
AddSample(46,4.8,3.0,1.4,0.3,"Iris-setosa");
AddSample(47,5.1,3.8,1.6,0.2,"Iris-setosa");
AddSample(48,4.6,3.2,1.4,0.2,"Iris-setosa");
AddSample(49,5.3,3.7,1.5,0.2,"Iris-setosa");
AddSample(50,5.0,3.3,1.4,0.2,"Iris-setosa");
AddSample(51,7.0,3.2,4.7,1.4,"Iris-versicolor");
AddSample(52,6.4,3.2,4.5,1.5,"Iris-versicolor");
AddSample(53,6.9,3.1,4.9,1.5,"Iris-versicolor");
AddSample(54,5.5,2.3,4.0,1.3,"Iris-versicolor");
AddSample(55,6.5,2.8,4.6,1.5,"Iris-versicolor");
AddSample(56,5.7,2.8,4.5,1.3,"Iris-versicolor");
AddSample(57,6.3,3.3,4.7,1.6,"Iris-versicolor");
AddSample(58,4.9,2.4,3.3,1.0,"Iris-versicolor");
AddSample(59,6.6,2.9,4.6,1.3,"Iris-versicolor");
AddSample(60,5.2,2.7,3.9,1.4,"Iris-versicolor");
AddSample(61,5.0,2.0,3.5,1.0,"Iris-versicolor");
AddSample(62,5.9,3.0,4.2,1.5,"Iris-versicolor");
AddSample(63,6.0,2.2,4.0,1.0,"Iris-versicolor");
AddSample(64,6.1,2.9,4.7,1.4,"Iris-versicolor");
AddSample(65,5.6,2.9,3.6,1.3,"Iris-versicolor");
AddSample(66,6.7,3.1,4.4,1.4,"Iris-versicolor");
AddSample(67,5.6,3.0,4.5,1.5,"Iris-versicolor");
AddSample(68,5.8,2.7,4.1,1.0,"Iris-versicolor");
AddSample(69,6.2,2.2,4.5,1.5,"Iris-versicolor");
AddSample(70,5.6,2.5,3.9,1.1,"Iris-versicolor");
AddSample(71,5.9,3.2,4.8,1.8,"Iris-versicolor");
AddSample(72,6.1,2.8,4.0,1.3,"Iris-versicolor");
AddSample(73,6.3,2.5,4.9,1.5,"Iris-versicolor");
AddSample(74,6.1,2.8,4.7,1.2,"Iris-versicolor");
AddSample(75,6.4,2.9,4.3,1.3,"Iris-versicolor");
AddSample(76,6.6,3.0,4.4,1.4,"Iris-versicolor");
AddSample(77,6.8,2.8,4.8,1.4,"Iris-versicolor");
AddSample(78,6.7,3.0,5.0,1.7,"Iris-versicolor");
AddSample(79,6.0,2.9,4.5,1.5,"Iris-versicolor");
AddSample(80,5.7,2.6,3.5,1.0,"Iris-versicolor");
AddSample(81,5.5,2.4,3.8,1.1,"Iris-versicolor");
AddSample(82,5.5,2.4,3.7,1.0,"Iris-versicolor");
AddSample(83,5.8,2.7,3.9,1.2,"Iris-versicolor");
AddSample(84,6.0,2.7,5.1,1.6,"Iris-versicolor");
AddSample(85,5.4,3.0,4.5,1.5,"Iris-versicolor");
AddSample(86,6.0,3.4,4.5,1.6,"Iris-versicolor");
AddSample(87,6.7,3.1,4.7,1.5,"Iris-versicolor");
AddSample(88,6.3,2.3,4.4,1.3,"Iris-versicolor");
AddSample(89,5.6,3.0,4.1,1.3,"Iris-versicolor");
AddSample(90,5.5,2.5,4.0,1.3,"Iris-versicolor");
AddSample(91,5.5,2.6,4.4,1.2,"Iris-versicolor");
AddSample(92,6.1,3.0,4.6,1.4,"Iris-versicolor");
AddSample(93,5.8,2.6,4.0,1.2,"Iris-versicolor");
AddSample(94,5.0,2.3,3.3,1.0,"Iris-versicolor");
AddSample(95,5.6,2.7,4.2,1.3,"Iris-versicolor");
AddSample(96,5.7,3.0,4.2,1.2,"Iris-versicolor");
AddSample(97,5.7,2.9,4.2,1.3,"Iris-versicolor");
AddSample(98,6.2,2.9,4.3,1.3,"Iris-versicolor");
AddSample(99,5.1,2.5,3.0,1.1,"Iris-versicolor");
AddSample(100,5.7,2.8,4.1,1.3,"Iris-versicolor");
AddSample(101,6.3,3.3,6.0,2.5,"Iris-virginica");
AddSample(102,5.8,2.7,5.1,1.9,"Iris-virginica");
AddSample(103,7.1,3.0,5.9,2.1,"Iris-virginica");
AddSample(104,6.3,2.9,5.6,1.8,"Iris-virginica");
AddSample(105,6.5,3.0,5.8,2.2,"Iris-virginica");
AddSample(106,7.6,3.0,6.6,2.1,"Iris-virginica");
AddSample(107,4.9,2.5,4.5,1.7,"Iris-virginica");
AddSample(108,7.3,2.9,6.3,1.8,"Iris-virginica");
AddSample(109,6.7,2.5,5.8,1.8,"Iris-virginica");
AddSample(110,7.2,3.6,6.1,2.5,"Iris-virginica");
AddSample(111,6.5,3.2,5.1,2.0,"Iris-virginica");
AddSample(112,6.4,2.7,5.3,1.9,"Iris-virginica");
AddSample(113,6.8,3.0,5.5,2.1,"Iris-virginica");
AddSample(114,5.7,2.5,5.0,2.0,"Iris-virginica");
AddSample(115,5.8,2.8,5.1,2.4,"Iris-virginica");
AddSample(116,6.4,3.2,5.3,2.3,"Iris-virginica");
AddSample(117,6.5,3.0,5.5,1.8,"Iris-virginica");
AddSample(118,7.7,3.8,6.7,2.2,"Iris-virginica");
AddSample(119,7.7,2.6,6.9,2.3,"Iris-virginica");
AddSample(120,6.0,2.2,5.0,1.5,"Iris-virginica");
AddSample(121,6.9,3.2,5.7,2.3,"Iris-virginica");
AddSample(122,5.6,2.8,4.9,2.0,"Iris-virginica");
AddSample(123,7.7,2.8,6.7,2.0,"Iris-virginica");
AddSample(124,6.3,2.7,4.9,1.8,"Iris-virginica");
AddSample(125,6.7,3.3,5.7,2.1,"Iris-virginica");
AddSample(126,7.2,3.2,6.0,1.8,"Iris-virginica");
AddSample(127,6.2,2.8,4.8,1.8,"Iris-virginica");
AddSample(128,6.1,3.0,4.9,1.8,"Iris-virginica");
AddSample(129,6.4,2.8,5.6,2.1,"Iris-virginica");
AddSample(130,7.2,3.0,5.8,1.6,"Iris-virginica");
AddSample(131,7.4,2.8,6.1,1.9,"Iris-virginica");
AddSample(132,7.9,3.8,6.4,2.0,"Iris-virginica");
AddSample(133,6.4,2.8,5.6,2.2,"Iris-virginica");
AddSample(134,6.3,2.8,5.1,1.5,"Iris-virginica");
AddSample(135,6.1,2.6,5.6,1.4,"Iris-virginica");
AddSample(136,7.7,3.0,6.1,2.3,"Iris-virginica");
AddSample(137,6.3,3.4,5.6,2.4,"Iris-virginica");
AddSample(138,6.4,3.1,5.5,1.8,"Iris-virginica");
AddSample(139,6.0,3.0,4.8,1.8,"Iris-virginica");
AddSample(140,6.9,3.1,5.4,2.1,"Iris-virginica");
AddSample(141,6.7,3.1,5.6,2.4,"Iris-virginica");
AddSample(142,6.9,3.1,5.1,2.3,"Iris-virginica");
AddSample(143,5.8,2.7,5.1,1.9,"Iris-virginica");
AddSample(144,6.8,3.2,5.9,2.3,"Iris-virginica");
AddSample(145,6.7,3.3,5.7,2.5,"Iris-virginica");
AddSample(146,6.7,3.0,5.2,2.3,"Iris-virginica");
AddSample(147,6.3,2.5,5.0,1.9,"Iris-virginica");
AddSample(148,6.5,3.0,5.2,2.0,"Iris-virginica");
AddSample(149,6.2,3.4,5.4,2.3,"Iris-virginica");
AddSample(150,5.9,3.0,5.1,1.8,"Iris-virginica");
//---
ArrayResize(iris_samples,150);
for(int i=0; i<Exttotal; i++)
{
iris_samples[i]=ExtIRISDataset[i];
}
//---
return(true);
}
//+------------------------------------------------------------------+