230 lines
10 KiB
MQL5
230 lines
10 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| 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);
|
||
|
}
|
||
|
//+------------------------------------------------------------------+
|