1 // Copyright (C) 2007-2021 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #include "PMMLBasicsTest1.hxx"
23 #include "PMMLlib.hxx"
28 void PMMLBasicsTest1::setUp()
30 resourcesDir = "samples/";
32 const char* user = std::getenv("USERPROFILE");
33 std::string strUser("");
35 strUser = std::string(user);
37 throw std::string("unable to get USERPROFILE");
40 tmpDir += "\\PmmlUnitTest\\";
41 std::string cmd = "mkdir " + tmpDir;
42 system( cmd.c_str() );
45 tmpDir += getenv("USER");
46 tmpDir += "/PmmlUnitTest/";
47 std::string cmd = "mkdir -p " + tmpDir;
48 system( cmd.c_str() );
52 void PMMLBasicsTest1::tearDown()
55 string cmd = "rmdir " + tmpDir + " /s /q ";
56 system( cmd.c_str() );
58 string cmd = "rm -rf " + tmpDir;
59 system( cmd.c_str() );
63 //**************************************************************
67 // méthodes communes à tous les types de modèles *
71 //**************************************************************
73 void PMMLBasicsTest1::testMakeLog()
75 string pmmlFile = resourcesDir + "ann_model.pmml";
78 logRef = "**\n**** Display of PMMLlib ****\n";
79 logRef += " ** _pmmlFile[";
82 logRef += " ** _log[";
83 logRef += (b?"1":"0");
85 logRef += "**\n**** End of display of PMMLlib ****\n";
86 PMMLlib::PMMLlib p(pmmlFile, b);
87 p.SetCurrentModel("sANNName", PMMLlib::kANN);
88 CPPUNIT_ASSERT_EQUAL( p.makeLog(), logRef );
91 void PMMLBasicsTest1::testConstructorFileDoesNotExist()
93 CPPUNIT_ASSERT_THROW( PMMLlib::PMMLlib p("0.mml", true) , std::string );
96 void PMMLBasicsTest1::testSetCurrentModelWithNameAndTypekANNUnknownModel()
98 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
99 CPPUNIT_ASSERT_THROW( p.SetCurrentModel("toto", PMMLlib::kANN), std::string );
102 void PMMLBasicsTest1::testSetCurrentModelWithNameAndTypekLRUnknownModel()
104 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
105 CPPUNIT_ASSERT_THROW( p.SetCurrentModel( "toto", PMMLlib::kLR), std::string );
108 void PMMLBasicsTest1::testSetCurrentModelWithNameAndTypekUNDEFINEDUnknownModel()
110 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
111 CPPUNIT_ASSERT_THROW( p.SetCurrentModel("toto", PMMLlib::kUNDEFINED), std::string );
114 void PMMLBasicsTest1::testSetCurrentModelWithNameAndType()
116 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
117 p.SetCurrentModel("sANNName", PMMLlib::kANN);
118 CPPUNIT_ASSERT_EQUAL( p.GetModelsNb(), 1 );
119 CPPUNIT_ASSERT_EQUAL( p.GetCurrentModelType(), PMMLlib::kANN );
122 void PMMLBasicsTest1::testSetCurrentModelWithNameAndTypeTwoModelsWithSameNames()
124 PMMLlib::PMMLlib p(resourcesDir + "two_models_ann_lr.pmml");
125 p.SetCurrentModel("modelName", PMMLlib::kLR);
126 CPPUNIT_ASSERT_EQUAL( p.GetModelsNb(), 2 );
127 CPPUNIT_ASSERT_EQUAL( p.GetCurrentModelType(), PMMLlib::kLR );
130 void PMMLBasicsTest1::testSetCurrentModelWithNameWrongName()
132 PMMLlib::PMMLlib pANN(resourcesDir + "ann_model.pmml");
133 CPPUNIT_ASSERT_THROW( pANN.SetCurrentModel("toto"), std::string );
136 void PMMLBasicsTest1::testSetCurrentModelWithNameTwoModelsWithSameNames()
138 PMMLlib::PMMLlib p(resourcesDir + "two_models_ann_lr.pmml");
139 CPPUNIT_ASSERT_THROW( p.SetCurrentModel("modelName"), std::string );
142 void PMMLBasicsTest1::testSetCurrentModelWithName()
145 PMMLlib::PMMLlib pANN(resourcesDir + "ann_model.pmml");
146 pANN.SetCurrentModel("sANNName");
147 CPPUNIT_ASSERT_EQUAL( pANN.GetModelsNb(), 1 );
148 CPPUNIT_ASSERT_EQUAL( pANN.GetCurrentModelType(), PMMLlib::kANN );
150 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
151 PMMLlib::PMMLlib pLR(resourcesDir + "lr_model.pmml");
152 pLR.SetCurrentModel(strModel);
153 CPPUNIT_ASSERT_EQUAL( pLR.GetModelsNb(), 1 );
154 CPPUNIT_ASSERT_EQUAL( pLR.GetCurrentModelType(), PMMLlib::kLR );
157 void PMMLBasicsTest1::testSetCurrentModelNoModel()
159 PMMLlib::PMMLlib p(resourcesDir + "no_model.pmml");
160 CPPUNIT_ASSERT_THROW( p.SetCurrentModel(), std::string );
163 void PMMLBasicsTest1::testSetCurrentModelMoreThanOneModel()
165 PMMLlib::PMMLlib p(resourcesDir + "two_models_ann_lr.pmml");
166 CPPUNIT_ASSERT_THROW( p.SetCurrentModel(), std::string );
169 void PMMLBasicsTest1::testSetCurrentModel()
172 PMMLlib::PMMLlib pANN(resourcesDir + "ann_model.pmml");
173 pANN.SetCurrentModel();
174 CPPUNIT_ASSERT_EQUAL( pANN.GetModelsNb(), 1 );
175 CPPUNIT_ASSERT_EQUAL( pANN.GetCurrentModelType(), PMMLlib::kANN );
176 CPPUNIT_ASSERT_EQUAL( pANN.GetCurrentModelName(), string("sANNName") );
178 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
179 PMMLlib::PMMLlib pLR(resourcesDir + "lr_model.pmml");
180 pLR.SetCurrentModel();
181 CPPUNIT_ASSERT_EQUAL( pLR.GetModelsNb(), 1 );
182 CPPUNIT_ASSERT_EQUAL( pLR.GetCurrentModelType(), PMMLlib::kLR );
183 CPPUNIT_ASSERT_EQUAL( pLR.GetCurrentModelName(), strModel );
186 void PMMLBasicsTest1::testGetModelsNbkANN()
188 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
189 CPPUNIT_ASSERT_EQUAL( p.GetModelsNb(), 1 );
192 void PMMLBasicsTest1::testGetModelsNbkLR()
194 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
195 CPPUNIT_ASSERT_EQUAL( p.GetModelsNb(), 1 );
198 void PMMLBasicsTest1::testWrite()
200 string refPmmlFilename = resourcesDir + "ann_model.pmml";
201 string pmmlFilename = tmpDir + "unittest_generated_ann_model.pmml";
203 PMMLlib::PMMLlib p(refPmmlFilename);
204 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
205 p.Write(pmmlFilename);
206 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refPmmlFilename, pmmlFilename), 0 );
209 void PMMLBasicsTest1::testWriteNotExistingFile()
212 CPPUNIT_ASSERT_THROW( p.Write(), std::string );
215 void PMMLBasicsTest1::testUnlinkNode()
217 string pmmlFilename = tmpDir + "unittest_unlinked_ann_model.pmml";
218 string refPmmlFilename = resourcesDir + "ann_model.pmml";
219 PMMLlib::PMMLlib refP(refPmmlFilename);
220 refP.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
222 refP.Write(pmmlFilename);
223 PMMLlib::PMMLlib p2(pmmlFilename);
224 CPPUNIT_ASSERT_EQUAL( p2.GetModelsNb(), 0 );
227 void PMMLBasicsTest1::testBackupNode()
229 string pmmlFilename = tmpDir + "unittest_backup_ann_model.pmml";
230 string refPmmlFilename = resourcesDir + "ann_model.pmml";
231 PMMLlib::PMMLlib refP(refPmmlFilename, true);
232 refP.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
233 refP.BackupNode(); // rename sANNName to sANNName_0
234 refP.BackupNode(); // rename sANNName_0 to sANNName_1
235 // Create the PMML test file
236 refP.Write(pmmlFilename);
237 PMMLlib::PMMLlib p(pmmlFilename, true);
239 CPPUNIT_ASSERT_EQUAL( p.GetModelsNb(), 1 );
240 // Its name is sANNName_1:
241 p.SetCurrentModel(string("sANNName_1"), PMMLlib::kANN);
242 // XML tree for NeuralNetwork sANNName_1 is the same than in sANNName
243 CPPUNIT_ASSERT_EQUAL( p.GetNbOutputs(), 1 );
244 // sANNName is not there anymore: SetCurrentModel throws an exception
245 // You'll have to build the new structure from scratch
246 CPPUNIT_ASSERT_THROW( p.SetCurrentModel(string("sANNName"), PMMLlib::kANN), std::string );
249 //**************************************************************
253 // méthodes propres au NeuralNetwork *
257 //**************************************************************
259 void PMMLBasicsTest1::testGetNbInputsForbiddenModelType()
261 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
262 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
263 p.SetCurrentModel( strModel, PMMLlib::kLR);
264 CPPUNIT_ASSERT_THROW( p.GetNbInputs(), std::string );
267 void PMMLBasicsTest1::testGetNbInputs8()
269 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
270 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
271 CPPUNIT_ASSERT_EQUAL( p.GetNbInputs(), 8 );
275 void PMMLBasicsTest1::testGetNbOutputsForbiddenModelType()
277 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
278 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
279 p.SetCurrentModel( strModel, PMMLlib::kLR);
280 CPPUNIT_ASSERT_THROW( p.GetNbOutputs(), std::string );
283 void PMMLBasicsTest1::testGetNbOutputs2()
285 PMMLlib::PMMLlib p(resourcesDir + "ann_model_2.pmml");
286 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
287 CPPUNIT_ASSERT_EQUAL( p.GetNbOutputs(), 2 );
291 void PMMLBasicsTest1::testGetNameInputForbiddenModelType()
293 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
294 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
295 p.SetCurrentModel( strModel, PMMLlib::kLR);
296 CPPUNIT_ASSERT_THROW( p.GetNameInput(0), std::string );
299 void PMMLBasicsTest1::testGetNameInputIndexOutOfRange()
301 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
302 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
303 CPPUNIT_ASSERT_EQUAL( p.GetNameInput(18), string("") );
306 void PMMLBasicsTest1::testGetNameInput()
308 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
309 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
310 CPPUNIT_ASSERT_EQUAL( p.GetNameInput(2), string("tu") );
313 void PMMLBasicsTest1::testGetNameOutputForbiddenModelType()
315 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
316 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
317 p.SetCurrentModel( strModel, PMMLlib::kLR);
318 CPPUNIT_ASSERT_THROW( p.GetNameOutput(0), std::string );
321 void PMMLBasicsTest1::testGetNameOutputIndexOutOfRange()
323 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
324 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
325 CPPUNIT_ASSERT_EQUAL( p.GetNameOutput(3), string("") );
328 void PMMLBasicsTest1::testGetNameOutput()
330 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
331 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
332 CPPUNIT_ASSERT_EQUAL( p.GetNameOutput(0), string("yhat") );
336 void PMMLBasicsTest1::testGetNormalisationInputForbiddenType()
338 double * dnorm = new double[2];
339 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
340 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
341 p.SetCurrentModel( strModel, PMMLlib::kLR);
342 CPPUNIT_ASSERT_THROW( p.GetNormalisationInput(0, dnorm), std::string );
346 void PMMLBasicsTest1::testGetNormalisationInputIndexUnknown()
348 double * dnorm = new double[2];
349 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
350 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
351 p.GetNormalisationInput(18, dnorm) ;
352 CPPUNIT_ASSERT_EQUAL( dnorm[0], 0.0 );
353 CPPUNIT_ASSERT_EQUAL( dnorm[1], 0.0 );
357 void PMMLBasicsTest1::testGetNormalisationInputkMinusOneOne()
359 // Valeurs de reference
360 double dorig1Ref = 2;
361 double dorig2Ref = 1.400018e+03;
362 double * dnormRef = new double[2];
363 dnormRef[0] = dorig1Ref ;
364 dnormRef[1] = dorig2Ref ;
365 double * dnorm = new double[2];
366 PMMLlib::PMMLlib p(resourcesDir + "ann_model_2.pmml");
367 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
368 p.GetNormalisationInput(6, dnorm) ;
369 CPPUNIT_ASSERT_EQUAL( dnorm[0], dnormRef[0] );
370 CPPUNIT_ASSERT_EQUAL( dnorm[1], dnormRef[1] );
375 void PMMLBasicsTest1::testGetNormalisationInputkCRkZeroOne()
377 // Valeurs de reference
378 double dnorm1Ref = -5.780019e-02;
379 double dorig2Ref = 1.095001e+04;
380 double * dnormRef = new double[2];
381 dnormRef[0] = dorig2Ref ;
382 dnormRef[1] = -1.0 * dorig2Ref * dnorm1Ref ;
383 double * dnorm = new double[2];
384 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
385 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
386 p.GetNormalisationInput(7, dnorm) ;
387 CPPUNIT_ASSERT_EQUAL( dnorm[0], dnormRef[0] );
388 CPPUNIT_ASSERT_EQUAL( dnorm[1], dnormRef[1] );
393 void PMMLBasicsTest1::testGetNormalisationOutputForbiddenType()
395 double * dnorm = new double[2];
396 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
397 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
398 p.SetCurrentModel( strModel, PMMLlib::kLR);
399 CPPUNIT_ASSERT_THROW( p.GetNormalisationOutput(0, dnorm), std::string );
403 void PMMLBasicsTest1::testGetNormalisationOutputIndexUnknown()
405 double * dnorm = new double[2];
406 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
407 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
408 p.GetNormalisationOutput(18, dnorm) ;
409 CPPUNIT_ASSERT_EQUAL( dnorm[0], 0.0 );
410 CPPUNIT_ASSERT_EQUAL( dnorm[1], 0.0 );
414 void PMMLBasicsTest1::testGetNormalisationOutputkMinusOneOne()
416 // Valeurs de reference
417 double dorig1Ref = 2;
418 double dorig2Ref = 5.781171e+01;
419 double * dnormRef = new double[2];
420 dnormRef[0] = dorig1Ref ;
421 dnormRef[1] = dorig2Ref ;
422 double * dnorm = new double[2];
423 PMMLlib::PMMLlib p(resourcesDir + "ann_model_2.pmml");
424 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
425 p.GetNormalisationOutput(1, dnorm) ;
426 CPPUNIT_ASSERT_EQUAL( dnorm[0], dnormRef[0] );
427 CPPUNIT_ASSERT_EQUAL( dnorm[1], dnormRef[1] );
432 void PMMLBasicsTest1::testGetNormalisationOutputkCRkZeroOne()
434 // Valeurs de reference
435 double dnorm1Ref = -5.873935e-01;
436 double dorig2Ref = 7.781171e+01;
437 double * dnormRef = new double[2];
438 dnormRef[0] = dorig2Ref ;
439 dnormRef[1] = -1.0 * dorig2Ref * dnorm1Ref ;
440 double * dnorm = new double[2];
441 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
442 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
443 p.GetNormalisationOutput(0, dnorm) ;
444 CPPUNIT_ASSERT_EQUAL( dnorm[0], dnormRef[0] );
445 CPPUNIT_ASSERT_EQUAL( dnorm[1], dnormRef[1] );
450 void PMMLBasicsTest1::testGetNbLayersForbiddenType()
452 double * dnorm = new double[2];
453 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
454 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
455 p.SetCurrentModel( strModel, PMMLlib::kLR);
456 CPPUNIT_ASSERT_THROW( p.GetNbLayers(), std::string );
460 void PMMLBasicsTest1::testGetNbLayers()
462 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
463 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
464 CPPUNIT_ASSERT_EQUAL( p.GetNbHiddenLayers(), 2 );
465 CPPUNIT_ASSERT_EQUAL( p.GetNbLayers(), 4 );
468 void PMMLBasicsTest1::testGetNbNeuronsAtLayerForbiddenType()
470 double * dnorm = new double[2];
471 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
472 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
473 p.SetCurrentModel( strModel, PMMLlib::kLR);
474 CPPUNIT_ASSERT_THROW( p.GetNbNeuronsAtLayer(0), std::string );
478 void PMMLBasicsTest1::testGetNbNeuronsAtLayerFromIndexOutOfRange()
480 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
481 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
482 CPPUNIT_ASSERT_EQUAL( p.GetNbNeuronsAtLayer(18), 0 );
485 void PMMLBasicsTest1::testGetNbNeuronsAtLayer()
487 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
488 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
489 CPPUNIT_ASSERT_EQUAL( p.GetNbNeuronsAtLayer(0), 1 );
492 void PMMLBasicsTest1::testGetNeuronBiasForbiddenType()
494 double * dnorm = new double[2];
495 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
496 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
497 p.SetCurrentModel( strModel, PMMLlib::kLR);
498 CPPUNIT_ASSERT_THROW( p.GetNeuronBias(0,0), std::string );
502 void PMMLBasicsTest1::testGetNeuronBiasFromLayerIndexOutOfRange()
504 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
505 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
506 CPPUNIT_ASSERT_EQUAL( p.GetNeuronBias(10,1), 0. );
509 void PMMLBasicsTest1::testGetNeuronBiasFromNeuronIndexOutOfRange()
511 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
512 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
513 CPPUNIT_ASSERT_EQUAL( p.GetNeuronBias(0,10), 0. );
516 void PMMLBasicsTest1::testGetNeuronBias()
518 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
519 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
520 CPPUNIT_ASSERT_EQUAL( p.GetNeuronBias(0,0), -1.263572e+00 );
523 void PMMLBasicsTest1::testGetPrecNeuronSynapseForbiddenType()
525 double * dnorm = new double[2];
526 string strModel("Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]");
527 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
528 p.SetCurrentModel( strModel, PMMLlib::kLR );
529 CPPUNIT_ASSERT_THROW( p.GetPrecNeuronSynapse(0,0,0), std::string );
533 void PMMLBasicsTest1::testGetPrecNeuronSynapseFromLayerIndexOutOfRange()
535 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
536 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
537 CPPUNIT_ASSERT_EQUAL( p.GetPrecNeuronSynapse(10,1,1), 0. );
540 void PMMLBasicsTest1::testGetPrecNeuronSynapseFromNeuronIndexOutOfRange()
542 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
543 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
544 CPPUNIT_ASSERT_EQUAL( p.GetPrecNeuronSynapse(1,10,1), 0. );
547 void PMMLBasicsTest1::testGetPrecNeuronSynapseFromPrecIndexOutOfRange()
549 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
550 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
551 CPPUNIT_ASSERT_EQUAL( p.GetPrecNeuronSynapse(1,0,10), 0. );
554 void PMMLBasicsTest1::testGetPrecNeuronSynapse()
556 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
557 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
558 CPPUNIT_ASSERT_EQUAL( p.GetPrecNeuronSynapse(0,0,7), 8.559675e-02 );
561 void PMMLBasicsTest1::testReadNetworkStructure()
563 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
564 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
565 string str = p.ReadNetworkStructure();
566 CPPUNIT_ASSERT_EQUAL( p.ReadNetworkStructure(), string("rw:r:tu:tl:hu:hl:l:kw,1,@yhat") );
569 void PMMLBasicsTest1::testExportNeuralNetworkCpp()
571 string refCppFilename = resourcesDir + "unittest_ref_ann_model.cpp";
572 string cppFilename = tmpDir + "unittest_ann_model.cpp";
573 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
574 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
575 p.ExportCpp(cppFilename,
577 "File used by unit test\n PMMLBasicsTest1::testExportNeuralNetworkCpp" );
578 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refCppFilename, cppFilename), 0 );
581 void PMMLBasicsTest1::testExportNeuralNetworkFortran()
583 string refFortranFilename = resourcesDir + "unittest_ref_ann_model.f";
584 string fortranFilename = tmpDir + "unittest_ann_model.f";
585 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
586 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
587 p.ExportFortran(fortranFilename,
589 "File used by unit test\n PMMLBasicsTest1::testExportNeuralNetworkFortran" );
590 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refFortranFilename, fortranFilename), 0 );
593 void PMMLBasicsTest1::testExportNeuralNetworkPython()
595 string refPyFilename = resourcesDir + "unittest_ref_ann_model.py";
596 string pyFilename = tmpDir + "unittest_ann_model.py";
597 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
598 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN );
599 p.ExportPython(pyFilename,
601 "File used by unit test\n PMMLBasicsTest1::testExportNeuralNetworkPython" );
602 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refPyFilename, pyFilename), 0 );
605 void PMMLBasicsTest1::testCreatePmmlNeuralNetwork()
608 std::string refPmmlFilename = resourcesDir + "win32_ann_model.pmml";
610 std::string refPmmlFilename = resourcesDir + "ann_model.pmml";
612 std::string pmmlFilename = tmpDir + "unittest_generated_ann_model.pmml";
619 vector<string>fieldName(nInput+1);
628 fieldName[8] = "yhat";
629 double orig1=0, norm2=0;
630 vector<double>norm1(nInput);
631 norm1[0] = -2.889932e-01;
632 norm1[1] = -5.756638e-01;
633 norm1[2] = -1.699313e-01;
634 norm1[3] = -1.707007e-01;
635 norm1[4] = -3.302777e-02;
636 norm1[5] = -4.562070e-02;
637 norm1[6] = -1.155882e-01;
638 norm1[7] = -5.780019e-02;
639 vector<double>orig2(nInput);
640 orig2[0] = 9.999901e-02;
641 orig2[1] = 2.504894e+04;
642 orig2[2] = 8.933486e+04;
643 orig2[3] = 8.955232e+01;
644 orig2[4] = 1.050003e+03;
645 orig2[5] = 7.600007e+02;
646 orig2[6] = 1.400018e+03;
647 orig2[7] = 1.095001e+04;
648 vector<double>weights(nWeights);
649 weights[0] = 7.536629e-01;
650 weights[1] = 1.653660e-03;
651 weights[2] = 4.725001e-03;
652 weights[3] = 9.969786e-03;
653 weights[4] = 1.787976e-01;
654 weights[5] = -1.809809e-01;
655 weights[6] = -1.735688e-01;
656 weights[7] = 8.559675e-02;
657 weights[8] = 6.965512e+00;
662 // Header node--------------------------------------------------------
663 p.SetHeader("myCopyright", "Tests unitaires", "PMMLlib", "myVersion", "Tests unitaires PMMLlib");
664 // DataDictionnary node--------------------------------------------------------
665 for(int j=0 ; j<nInput+1 ; j++)
667 p.AddDataField(fieldName[j], fieldName[j], "continuous", "float", "ClosedClosed", 0., 0.);
669 // Set Neural Network (and type)---------------------------------------------
670 p.AddNeuralNetwork( string("sANNName"), PMMLlib::kREGRESSION);
672 for(int j=0 ; j<nInput ; j++)
674 p.AddMiningSchema(fieldName[j], "active");
676 p.AddMiningSchema(fieldName[nInput], "predicted");
678 for(int j=0 ; j<nInput ; j++)
680 p.AddNeuralInput(j, fieldName[j], "continuous", "float", orig1, norm1[j], orig2[j], norm2);
683 p.AddNeuralLayer(PMMLlib::kTANH);
684 for(int j=0 ; j<nHidden ; j++) // hidden layers
686 vector<double> tmp_weights(nInput);
687 for(int i=0 ; i<nInput ; i++)
689 tmp_weights[i] = weights[i];
691 p.AddNeuron(nInput+j, -1.263572, nInput, 0, tmp_weights);
694 p.AddNeuralLayer(PMMLlib::kIDENTITY);
695 for(int j=0 ; j<nOutput ; j++)
697 vector<double> tmp_weights(nHidden);
698 tmp_weights[0] = weights[nWeights-1];
699 p.AddNeuron(nInput+nHidden+j, -1.745483, nHidden, nInput, tmp_weights);
702 p.AddNeuralOutput(nInput+nHidden, "yhat", "continuous", "float",
705 p.Write( pmmlFilename );
706 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refPmmlFilename, pmmlFilename), 0 );
709 //**************************************************************
713 // méthodes propres au RegressionModel *
717 //**************************************************************
719 void PMMLBasicsTest1::testHasInterceptForbiddenType()
721 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml" );
722 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
723 CPPUNIT_ASSERT_THROW( p.HasIntercept(), std::string );
726 void PMMLBasicsTest1::testHasIntercept()
728 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
729 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
730 p.SetCurrentModel( strModel, PMMLlib::kLR );
731 CPPUNIT_ASSERT_EQUAL( p.HasIntercept(), true );
734 void PMMLBasicsTest1::testHasInterceptNo()
736 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
737 PMMLlib::PMMLlib p(resourcesDir + "lr_model_2.pmml");
738 p.SetCurrentModel( strModel, PMMLlib::kLR );
739 CPPUNIT_ASSERT_EQUAL( p.HasIntercept(), false );
742 void PMMLBasicsTest1::testGetRegressionTableInterceptForbiddenType()
744 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
745 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
746 CPPUNIT_ASSERT_THROW( p.GetRegressionTableIntercept(), std::string );
749 void PMMLBasicsTest1::testGetRegressionTableIntercept()
751 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
752 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
753 p.SetCurrentModel( strModel, PMMLlib::kLR );
754 CPPUNIT_ASSERT_EQUAL( p.GetRegressionTableIntercept(), 3.837365 );
757 void PMMLBasicsTest1::testReadRegressionStructure()
759 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
760 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
761 p.SetCurrentModel( strModel, PMMLlib::kLR );
762 CPPUNIT_ASSERT_EQUAL( p.ReadRegressionStructure(), string("x6:x8,1,@x1") );
765 void PMMLBasicsTest1::testGetNumericPredictorNb()
767 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
768 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
769 p.SetCurrentModel( strModel, PMMLlib::kLR );
770 CPPUNIT_ASSERT_EQUAL( p.GetNumericPredictorNb(), 2 );
773 void PMMLBasicsTest1::testGetNumericPredictorNbForbiddenType()
775 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
776 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
777 CPPUNIT_ASSERT_THROW( p.GetNumericPredictorNb(), std::string );
780 void PMMLBasicsTest1::testGetPredictorTermNb()
782 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
783 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
784 p.SetCurrentModel( strModel, PMMLlib::kLR );
785 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermNb(), 2 );
788 void PMMLBasicsTest1::testGetPredictorTermNbForbiddenType()
790 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
791 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
792 CPPUNIT_ASSERT_THROW( p.GetNumericPredictorNb(), std::string );
795 void PMMLBasicsTest1::testGetNumericPredictorName()
797 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
798 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
799 p.SetCurrentModel( strModel, PMMLlib::kLR );
800 CPPUNIT_ASSERT_EQUAL( p.GetNumericPredictorName(1), string("x8") );
803 void PMMLBasicsTest1::testGetNumericPredictorNameForbiddenType()
805 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
806 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
807 CPPUNIT_ASSERT_THROW( p.GetNumericPredictorName(0), std::string );
810 void PMMLBasicsTest1::testGetNumericPredictorNamePredictorOutOfRange()
812 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
813 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
814 p.SetCurrentModel( strModel, PMMLlib::kLR );
815 CPPUNIT_ASSERT_EQUAL( p.GetNumericPredictorName(5), string("") );
818 void PMMLBasicsTest1::testGetPredictorTermName()
820 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
821 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
822 p.SetCurrentModel( strModel, PMMLlib::kLR );
823 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermName(1), string("x6x6x8") );
826 void PMMLBasicsTest1::testGetPredictorTermNameForbiddenType()
828 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
829 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
830 CPPUNIT_ASSERT_THROW( p.GetPredictorTermName(0), std::string );
833 void PMMLBasicsTest1::testGetPredictorTermNamePredictorOutOfRange()
835 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
836 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
837 p.SetCurrentModel( strModel, PMMLlib::kLR );
838 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermName(5), string("") );
841 void PMMLBasicsTest1::testGetNumericPredictorCoefficient()
843 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
844 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
845 p.SetCurrentModel( strModel, PMMLlib::kLR );
846 CPPUNIT_ASSERT_EQUAL( p.GetNumericPredictorCoefficient(1), 0.1428838 );
849 void PMMLBasicsTest1::testGetNumericPredictorCoefficientForbiddenType()
851 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
852 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
853 CPPUNIT_ASSERT_THROW( p.GetNumericPredictorCoefficient(0), std::string );
856 void PMMLBasicsTest1::testGetNumericPredictorCoefficientPredictorOutOfRange()
858 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
859 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
860 p.SetCurrentModel( strModel, PMMLlib::kLR );
861 CPPUNIT_ASSERT_EQUAL( p.GetNumericPredictorCoefficient(2), 0. );
864 void PMMLBasicsTest1::testGetPredictorTermCoefficient()
866 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
867 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
868 p.SetCurrentModel( strModel, PMMLlib::kLR );
869 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermCoefficient(0), -0.02201903 );
872 void PMMLBasicsTest1::testGetPredictorTermCoefficientForbiddenType()
874 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
875 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
876 CPPUNIT_ASSERT_THROW( p.GetPredictorTermCoefficient(0), std::string );
879 void PMMLBasicsTest1::testGetPredictorTermCoefficientPredictorOutOfRange()
881 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
882 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
883 p.SetCurrentModel( strModel, PMMLlib::kLR );
884 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermCoefficient(2), 0.);
887 void PMMLBasicsTest1::testGetPredictorTermFieldRefNb()
889 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
890 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
891 p.SetCurrentModel( strModel, PMMLlib::kLR );
892 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermFieldRefNb(1), 3 );
895 void PMMLBasicsTest1::testGetPredictorTermFieldRefNbForbiddenType()
897 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
898 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
899 CPPUNIT_ASSERT_THROW( p.GetPredictorTermFieldRefNb(0), std::string );
902 void PMMLBasicsTest1::testGetPredictorTermFieldRefNbPredictorOutOfRange()
904 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
905 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
906 p.SetCurrentModel( strModel, PMMLlib::kLR );
907 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermFieldRefNb(12), 0 );
910 void PMMLBasicsTest1::testGetPredictorTermFieldRefName()
912 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
913 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
914 p.SetCurrentModel( strModel, PMMLlib::kLR );
915 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermFieldRefName(1,1), string("x6") );
918 void PMMLBasicsTest1::testGetPredictorTermFieldRefNameForbiddenType()
920 PMMLlib::PMMLlib p(resourcesDir + "ann_model.pmml");
921 p.SetCurrentModel( string("sANNName"), PMMLlib::kANN);
922 CPPUNIT_ASSERT_THROW( p.GetPredictorTermFieldRefName(1,1), std::string );
925 void PMMLBasicsTest1::testGetPredictorTermFieldRefNamePredictorOutOfRange()
927 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
928 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
929 p.SetCurrentModel( strModel, PMMLlib::kLR );
930 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermFieldRefName(3,1), string("") );
933 void PMMLBasicsTest1::testGetPredictorTermFieldRefNameFieldOutOfRange()
935 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
936 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
937 p.SetCurrentModel( strModel, PMMLlib::kLR );
938 CPPUNIT_ASSERT_EQUAL( p.GetPredictorTermFieldRefName(1,5), string("") );
941 void PMMLBasicsTest1::testExportLinearRegressionCpp()
943 string refCppFilename = resourcesDir + "unittest_ref_lr_model.cpp";
944 string cppFilename = tmpDir + "unittest_lr_model.cpp";
945 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
946 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
947 p.SetCurrentModel( strModel, PMMLlib::kLR );
948 p.ExportCpp(cppFilename,
949 string("myTestFunc"),
950 "File used by unit test\n PMMLBasicsTest1::testExportLinearRegressionCpp" );
951 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refCppFilename, cppFilename), 0 );
954 void PMMLBasicsTest1::testExportLinearRegressionFortran()
956 string refFortranFilename = resourcesDir + "unittest_ref_lr_model.f";
957 string fortranFilename = tmpDir + "unittest_lr_model.f";
958 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
959 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
960 p.SetCurrentModel( strModel, PMMLlib::kLR );
961 p.ExportFortran(fortranFilename,
962 string("myTestFunc"),
963 "File used by unit test\n PMMLBasicsTest1::testExportLinearRegressionFortran" );
964 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refFortranFilename, fortranFilename), 0 );
967 void PMMLBasicsTest1::testExportLinearRegressionPython()
969 string refPyFilename = resourcesDir + "unittest_ref_lr_model.py";
970 string pyFilename = tmpDir + "unittest_lr_model.py";
971 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
972 PMMLlib::PMMLlib p(resourcesDir + "lr_model.pmml");
973 p.SetCurrentModel( strModel, PMMLlib::kLR );
974 p.ExportPython(pyFilename,
975 string("myTestFunc"),
976 "File used by unit test\n PMMLBasicsTest1::testExportLinearRegressionPython" );
977 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refPyFilename, pyFilename), 0 );
980 void PMMLBasicsTest1::testCreatePmmlRegression()
983 std::string refPmmlFilename = resourcesDir + "win32_lr_model.pmml";
985 std::string refPmmlFilename = resourcesDir + "lr_model.pmml";
987 std::string pmmlFilename = tmpDir + "unittest_generated_lr_model.pmml";
989 string strModel = "Modeler[LinearRegression]Tds[steamplant]Predictor[x6:x8:x6x8:x6x6x8]Target[x1]";
991 vector<string>fieldName(nData);
995 vector<string>displayName(nData);
996 displayName[0] = " x_{6}";
997 displayName[1] = " x_{8}";
998 displayName[2] = " x_{1}";
999 vector<double>leftMargin(nData);
1000 leftMargin[0] = 1.1e+01;
1001 leftMargin[1] = 2.81e+01;
1002 leftMargin[2] = 6.36e+00;
1003 vector<double>rightMargin(nData);
1004 rightMargin[0] = 2.3e+01;
1005 rightMargin[1] = 7.67e+01;
1006 rightMargin[2] = 1.251e+01;
1007 vector<double>numPredCoeff(nData-1);
1008 numPredCoeff[0] = 0.4759134;
1009 numPredCoeff[1] = 0.1428838;
1010 vector<double>predTermCoeff(nData-1);
1011 predTermCoeff[0] = -0.02201903;
1012 predTermCoeff[1] = 0.000536256;
1013 vector< vector<string> > fieldRefVect(nData-1);
1014 vector<string>fieldRef0(2);
1015 fieldRef0[0] = fieldName[0];
1016 fieldRef0[1] = fieldName[1];
1017 vector<string>fieldRef1(3);
1018 fieldRef1[0] = fieldName[0];
1019 fieldRef1[1] = fieldName[0];
1020 fieldRef1[2] = fieldName[1];
1021 fieldRefVect[0] = fieldRef0;
1022 fieldRefVect[nData-2] = fieldRef1;
1026 // Header node--------------------------------------------------------
1027 p.SetHeader("myCopyright", "Tests unitaires", "PMMLlib", "myVersion", "Tests unitaires PMMLlib");
1028 // DataDictionnary node--------------------------------------------------------
1029 for(int j=0; j<nData; j++)
1031 p.AddDataField(fieldName[j], displayName[j],
1032 "continuous", "double", "ClosedClosed",
1033 leftMargin[j], rightMargin[j], true);
1035 // Set Model (and type)----------------------------------------------
1036 p.AddRegressionModel( strModel, PMMLlib::kREGRESSION, fieldName[2]);
1037 // Set Mining schema------------------------------------------------
1038 for(int j=0 ; j<nData-1 ; j++)
1040 p.AddMiningSchema(fieldName[j], "active");
1042 p.AddMiningSchema(fieldName[nData-1], "predicted");
1043 // Set Regression table
1044 double intercept = 3.837365;
1045 p.AddRegressionTable(intercept);
1046 // Set numeric predictor
1047 for(int j=0; j<nData-1; j++)
1049 p.AddNumericPredictor(fieldName[j], 1, numPredCoeff[j]);
1051 // Set Predictor term
1052 for(int j=0; j<nData-1; j++)
1054 p.AddPredictorTerm(predTermCoeff[j], fieldRefVect[j]);
1056 p.Write( pmmlFilename );
1057 CPPUNIT_ASSERT_EQUAL( areFilesEqual( refPmmlFilename, pmmlFilename), 0 );