[135] | 1 |
|
---|
[68] | 2 | package de.ugoe.cs.cpdp.eval;
|
---|
| 3 |
|
---|
[135] | 4 | /**
|
---|
| 5 | * <p>
|
---|
| 6 | * Data class to store experiment results
|
---|
| 7 | * </p>
|
---|
| 8 | *
|
---|
| 9 | * @author Steffen Herbold
|
---|
| 10 | */
|
---|
[68] | 11 | public class ExperimentResult {
|
---|
| 12 |
|
---|
[135] | 13 | /**
|
---|
| 14 | * configuration name of the experiment
|
---|
| 15 | */
|
---|
[68] | 16 | private final String configurationName;
|
---|
[135] | 17 |
|
---|
| 18 | /**
|
---|
| 19 | * name of the target product
|
---|
| 20 | */
|
---|
[68] | 21 | private final String productName;
|
---|
[135] | 22 |
|
---|
| 23 | /**
|
---|
| 24 | * name of the classifier used
|
---|
| 25 | */
|
---|
[68] | 26 | private final String classifier;
|
---|
[135] | 27 |
|
---|
| 28 | /**
|
---|
| 29 | * number of instances of the target product
|
---|
| 30 | */
|
---|
[68] | 31 | int sizeTestData;
|
---|
[135] | 32 |
|
---|
| 33 | /**
|
---|
| 34 | * number of instances of the training data
|
---|
| 35 | */
|
---|
[68] | 36 | int sizeTrainingData;
|
---|
[135] | 37 |
|
---|
| 38 | /**
|
---|
| 39 | * error of the prediction
|
---|
| 40 | */
|
---|
[68] | 41 | double error = Double.NaN;
|
---|
[135] | 42 |
|
---|
| 43 | /**
|
---|
| 44 | * recall of the prediction
|
---|
| 45 | */
|
---|
[68] | 46 | double recall = Double.NaN;
|
---|
[135] | 47 |
|
---|
| 48 | /**
|
---|
| 49 | * precision of the prediction
|
---|
| 50 | */
|
---|
[68] | 51 | double precision = Double.NaN;
|
---|
[135] | 52 |
|
---|
| 53 | /**
|
---|
| 54 | * F1 score of the prediction
|
---|
| 55 | */
|
---|
[68] | 56 | double fscore = Double.NaN;
|
---|
[135] | 57 |
|
---|
| 58 | /**
|
---|
| 59 | * G score of the prediction
|
---|
| 60 | */
|
---|
[68] | 61 | double gscore = Double.NaN;
|
---|
[135] | 62 |
|
---|
| 63 | /**
|
---|
| 64 | * Matthews correlation coefficient of the prediction
|
---|
| 65 | */
|
---|
[68] | 66 | double mcc = Double.NaN;
|
---|
[135] | 67 |
|
---|
| 68 | /**
|
---|
| 69 | * Area under the curve of the prediction
|
---|
| 70 | */
|
---|
[68] | 71 | double auc = Double.NaN;
|
---|
[135] | 72 |
|
---|
| 73 | /**
|
---|
| 74 | * Effort of the prediction
|
---|
| 75 | */
|
---|
[68] | 76 | double aucec = Double.NaN;
|
---|
[135] | 77 |
|
---|
| 78 | /**
|
---|
| 79 | * True positive rate of the prediction
|
---|
| 80 | */
|
---|
[68] | 81 | double tpr = Double.NaN;
|
---|
[135] | 82 |
|
---|
| 83 | /**
|
---|
| 84 | * True negative rate of the prediction
|
---|
| 85 | */
|
---|
[68] | 86 | double tnr = Double.NaN;
|
---|
[135] | 87 |
|
---|
| 88 | /**
|
---|
| 89 | * false positive rate of the prediction
|
---|
| 90 | */
|
---|
[68] | 91 | double fpr = Double.NaN;
|
---|
[135] | 92 |
|
---|
| 93 | /**
|
---|
| 94 | * false negative rate of the prediction
|
---|
| 95 | */
|
---|
[68] | 96 | double fnr = Double.NaN;
|
---|
[135] | 97 |
|
---|
| 98 | /**
|
---|
| 99 | * number of true positives
|
---|
| 100 | */
|
---|
[68] | 101 | double tp = Double.NaN;
|
---|
[135] | 102 |
|
---|
| 103 | /**
|
---|
| 104 | * number of false negatives
|
---|
| 105 | */
|
---|
[68] | 106 | double fn = Double.NaN;
|
---|
[135] | 107 |
|
---|
| 108 | /**
|
---|
| 109 | * number of true negatives
|
---|
| 110 | */
|
---|
[68] | 111 | double tn = Double.NaN;
|
---|
[135] | 112 |
|
---|
| 113 | /**
|
---|
| 114 | * number of false positives
|
---|
| 115 | */
|
---|
[68] | 116 | double fp = Double.NaN;
|
---|
| 117 |
|
---|
[135] | 118 | /**
|
---|
| 119 | * <p>
|
---|
| 120 | * Constructor. Creates a new ExperimentResult.
|
---|
| 121 | * </p>
|
---|
| 122 | *
|
---|
| 123 | * @param configurationName
|
---|
| 124 | * the configuration name
|
---|
| 125 | * @param productName
|
---|
| 126 | * the product name
|
---|
| 127 | * @param classifier
|
---|
| 128 | * the classifier name
|
---|
| 129 | */
|
---|
| 130 | public ExperimentResult(String configurationName, String productName, String classifier) {
|
---|
| 131 | this.configurationName = configurationName;
|
---|
| 132 | this.productName = productName;
|
---|
| 133 | this.classifier = classifier;
|
---|
| 134 | }
|
---|
| 135 |
|
---|
| 136 | /**
|
---|
| 137 | * <p>
|
---|
| 138 | * returns the configuration name
|
---|
| 139 | * </p>
|
---|
| 140 | *
|
---|
| 141 | * @return the configuration name
|
---|
| 142 | */
|
---|
[68] | 143 | public String getConfigurationName() {
|
---|
| 144 | return configurationName;
|
---|
| 145 | }
|
---|
[135] | 146 |
|
---|
| 147 | /**
|
---|
| 148 | * <p>
|
---|
| 149 | * returns the product name
|
---|
| 150 | * </p>
|
---|
| 151 | *
|
---|
| 152 | * @return the product name
|
---|
| 153 | */
|
---|
[68] | 154 | public String getProductName() {
|
---|
| 155 | return productName;
|
---|
| 156 | }
|
---|
[135] | 157 |
|
---|
| 158 | /**
|
---|
| 159 | * <p>
|
---|
| 160 | * returns the classifier name
|
---|
| 161 | * </p>
|
---|
| 162 | *
|
---|
| 163 | * @return the classifier name
|
---|
| 164 | */
|
---|
[68] | 165 | public String getClassifier() {
|
---|
| 166 | return classifier;
|
---|
| 167 | }
|
---|
[135] | 168 |
|
---|
| 169 | /**
|
---|
| 170 | * <p>
|
---|
| 171 | * returns the number of instances of the target product
|
---|
| 172 | * </p>
|
---|
| 173 | *
|
---|
| 174 | * @return number of instances
|
---|
| 175 | */
|
---|
[68] | 176 | public int getSizeTestData() {
|
---|
| 177 | return sizeTestData;
|
---|
| 178 | }
|
---|
[135] | 179 |
|
---|
| 180 | /**
|
---|
| 181 | * <p>
|
---|
| 182 | * sets the number of instances of the target product
|
---|
| 183 | * </p>
|
---|
| 184 | *
|
---|
| 185 | * @param sizeTestData
|
---|
| 186 | * number of instances
|
---|
| 187 | */
|
---|
[68] | 188 | public void setSizeTestData(int sizeTestData) {
|
---|
| 189 | this.sizeTestData = sizeTestData;
|
---|
| 190 | }
|
---|
[135] | 191 |
|
---|
| 192 | /**
|
---|
| 193 | * <p>
|
---|
| 194 | * returns the number of instances of the training data
|
---|
| 195 | * </p>
|
---|
| 196 | *
|
---|
| 197 | * @return number of instances
|
---|
| 198 | */
|
---|
[68] | 199 | public int getSizeTrainingData() {
|
---|
| 200 | return sizeTrainingData;
|
---|
| 201 | }
|
---|
[135] | 202 |
|
---|
| 203 | /**
|
---|
| 204 | * <p>
|
---|
| 205 | * sets the number of instances of the training data
|
---|
| 206 | * </p>
|
---|
| 207 | *
|
---|
| 208 | * @param sizeTrainingData
|
---|
| 209 | * number of instances
|
---|
| 210 | */
|
---|
[68] | 211 | public void setSizeTrainingData(int sizeTrainingData) {
|
---|
| 212 | this.sizeTrainingData = sizeTrainingData;
|
---|
| 213 | }
|
---|
[135] | 214 |
|
---|
| 215 | /**
|
---|
| 216 | * <p>
|
---|
| 217 | * returns the error
|
---|
| 218 | * </p>
|
---|
| 219 | *
|
---|
| 220 | * @return the error
|
---|
| 221 | */
|
---|
[68] | 222 | public double getError() {
|
---|
| 223 | return error;
|
---|
| 224 | }
|
---|
[135] | 225 |
|
---|
| 226 | /**
|
---|
| 227 | * <p>
|
---|
| 228 | * sets the error
|
---|
| 229 | * </p>
|
---|
| 230 | *
|
---|
| 231 | * @param error
|
---|
| 232 | * the error
|
---|
| 233 | */
|
---|
[68] | 234 | public void setError(double error) {
|
---|
| 235 | this.error = error;
|
---|
| 236 | }
|
---|
[135] | 237 |
|
---|
| 238 | /**
|
---|
| 239 | * <p>
|
---|
| 240 | * returns the recall
|
---|
| 241 | * </p>
|
---|
| 242 | *
|
---|
| 243 | * @return the recall
|
---|
| 244 | */
|
---|
[68] | 245 | public double getRecall() {
|
---|
| 246 | return recall;
|
---|
| 247 | }
|
---|
[135] | 248 |
|
---|
| 249 | /**
|
---|
| 250 | * <p>
|
---|
| 251 | * sets the recall
|
---|
| 252 | * </p>
|
---|
| 253 | *
|
---|
| 254 | * @param recall
|
---|
| 255 | * the recall
|
---|
| 256 | */
|
---|
[68] | 257 | public void setRecall(double recall) {
|
---|
| 258 | this.recall = recall;
|
---|
| 259 | }
|
---|
[135] | 260 |
|
---|
| 261 | /**
|
---|
| 262 | * <p>
|
---|
| 263 | * returns the precision
|
---|
| 264 | * </p>
|
---|
| 265 | *
|
---|
| 266 | * @return the precision
|
---|
| 267 | */
|
---|
[68] | 268 | public double getPrecision() {
|
---|
| 269 | return precision;
|
---|
| 270 | }
|
---|
[135] | 271 |
|
---|
| 272 | /**
|
---|
| 273 | * <p>
|
---|
| 274 | * sets the precision
|
---|
| 275 | * </p>
|
---|
| 276 | *
|
---|
| 277 | * @param precision
|
---|
| 278 | * the precision
|
---|
| 279 | */
|
---|
[68] | 280 | public void setPrecision(double precision) {
|
---|
| 281 | this.precision = precision;
|
---|
| 282 | }
|
---|
[135] | 283 |
|
---|
| 284 | /**
|
---|
| 285 | * <p>
|
---|
| 286 | * returns the F1 score
|
---|
| 287 | * </p>
|
---|
| 288 | *
|
---|
| 289 | * @return the F1 score
|
---|
| 290 | */
|
---|
[68] | 291 | public double getFscore() {
|
---|
| 292 | return fscore;
|
---|
| 293 | }
|
---|
[135] | 294 |
|
---|
| 295 | /**
|
---|
| 296 | * <p>
|
---|
| 297 | * sets the F1 score
|
---|
| 298 | * </p>
|
---|
| 299 | *
|
---|
| 300 | * @param fscore
|
---|
| 301 | * the F1 score
|
---|
| 302 | */
|
---|
[68] | 303 | public void setFscore(double fscore) {
|
---|
| 304 | this.fscore = fscore;
|
---|
| 305 | }
|
---|
[135] | 306 |
|
---|
| 307 | /**
|
---|
| 308 | * <p>
|
---|
| 309 | * returns the G score
|
---|
| 310 | * </p>
|
---|
| 311 | *
|
---|
| 312 | * @return the G score
|
---|
| 313 | */
|
---|
[68] | 314 | public double getGscore() {
|
---|
| 315 | return gscore;
|
---|
| 316 | }
|
---|
[135] | 317 |
|
---|
| 318 | /**
|
---|
| 319 | * <p>
|
---|
| 320 | * sets the G score
|
---|
| 321 | * </p>
|
---|
| 322 | *
|
---|
| 323 | * @param gscore
|
---|
| 324 | * the G score
|
---|
| 325 | */
|
---|
[68] | 326 | public void setGscore(double gscore) {
|
---|
| 327 | this.gscore = gscore;
|
---|
| 328 | }
|
---|
[135] | 329 |
|
---|
| 330 | /**
|
---|
| 331 | * <p>
|
---|
| 332 | * returns the MCC
|
---|
| 333 | * </p>
|
---|
| 334 | *
|
---|
| 335 | * @return the MCC
|
---|
| 336 | */
|
---|
[68] | 337 | public double getMcc() {
|
---|
| 338 | return mcc;
|
---|
| 339 | }
|
---|
[135] | 340 |
|
---|
| 341 | /**
|
---|
| 342 | * <p>
|
---|
| 343 | * sets the MCC
|
---|
| 344 | * </p>
|
---|
| 345 | *
|
---|
| 346 | * @param mcc
|
---|
| 347 | * the MCC
|
---|
| 348 | */
|
---|
[68] | 349 | public void setMcc(double mcc) {
|
---|
| 350 | this.mcc = mcc;
|
---|
| 351 | }
|
---|
[135] | 352 |
|
---|
| 353 | /**
|
---|
| 354 | * <p>
|
---|
| 355 | * returns the AUC
|
---|
| 356 | * </p>
|
---|
| 357 | *
|
---|
| 358 | * @return the AUC
|
---|
| 359 | */
|
---|
[68] | 360 | public double getAuc() {
|
---|
| 361 | return auc;
|
---|
| 362 | }
|
---|
[135] | 363 |
|
---|
| 364 | /**
|
---|
| 365 | * <p>
|
---|
| 366 | * sets the AUC
|
---|
| 367 | * </p>
|
---|
| 368 | *
|
---|
| 369 | * @param auc
|
---|
| 370 | * the AUC
|
---|
| 371 | */
|
---|
[68] | 372 | public void setAuc(double auc) {
|
---|
| 373 | this.auc = auc;
|
---|
| 374 | }
|
---|
[135] | 375 |
|
---|
| 376 | /**
|
---|
| 377 | * <p>
|
---|
| 378 | * returns the effort as AUCEC
|
---|
| 379 | * </p>
|
---|
| 380 | *
|
---|
| 381 | * @return the effort
|
---|
| 382 | */
|
---|
[68] | 383 | public double getAucec() {
|
---|
| 384 | return aucec;
|
---|
| 385 | }
|
---|
[135] | 386 |
|
---|
| 387 | /**
|
---|
| 388 | * <p>
|
---|
| 389 | * sets the effort as AUCEC
|
---|
| 390 | * </p>
|
---|
| 391 | *
|
---|
| 392 | * @param aucec
|
---|
| 393 | * the effort
|
---|
| 394 | */
|
---|
[68] | 395 | public void setAucec(double aucec) {
|
---|
| 396 | this.aucec = aucec;
|
---|
| 397 | }
|
---|
[135] | 398 |
|
---|
| 399 | /**
|
---|
| 400 | * <p>
|
---|
| 401 | * returns the TPR
|
---|
| 402 | * </p>
|
---|
| 403 | *
|
---|
| 404 | * @return the TPR
|
---|
| 405 | */
|
---|
[68] | 406 | public double getTpr() {
|
---|
| 407 | return tpr;
|
---|
| 408 | }
|
---|
[135] | 409 |
|
---|
| 410 | /**
|
---|
| 411 | * <p>
|
---|
| 412 | * sets the TPR
|
---|
| 413 | * </p>
|
---|
| 414 | *
|
---|
| 415 | * @param tpr
|
---|
| 416 | * the TPR
|
---|
| 417 | */
|
---|
[68] | 418 | public void setTpr(double tpr) {
|
---|
| 419 | this.tpr = tpr;
|
---|
| 420 | }
|
---|
[135] | 421 |
|
---|
| 422 | /**
|
---|
| 423 | * <p>
|
---|
| 424 | * sets the TNR
|
---|
| 425 | * </p>
|
---|
| 426 | *
|
---|
| 427 | * @return the TNR
|
---|
| 428 | */
|
---|
[68] | 429 | public double getTnr() {
|
---|
| 430 | return tnr;
|
---|
| 431 | }
|
---|
[135] | 432 |
|
---|
| 433 | /**
|
---|
| 434 | * <p>
|
---|
| 435 | * sets the TNR
|
---|
| 436 | * </p>
|
---|
| 437 | *
|
---|
| 438 | * @param tnr
|
---|
| 439 | * the TNR
|
---|
| 440 | */
|
---|
[68] | 441 | public void setTnr(double tnr) {
|
---|
| 442 | this.tnr = tnr;
|
---|
| 443 | }
|
---|
[135] | 444 |
|
---|
| 445 | /**
|
---|
| 446 | * <p>
|
---|
| 447 | * returns the FPR
|
---|
| 448 | * </p>
|
---|
| 449 | *
|
---|
| 450 | * @return the FPR
|
---|
| 451 | */
|
---|
[68] | 452 | public double getFpr() {
|
---|
| 453 | return fpr;
|
---|
| 454 | }
|
---|
[135] | 455 |
|
---|
| 456 | /**
|
---|
| 457 | * <p>
|
---|
| 458 | * sets the FPR
|
---|
| 459 | * </p>
|
---|
| 460 | *
|
---|
| 461 | * @param fpr
|
---|
| 462 | * the FPR
|
---|
| 463 | */
|
---|
[68] | 464 | public void setFpr(double fpr) {
|
---|
| 465 | this.fpr = fpr;
|
---|
| 466 | }
|
---|
[135] | 467 |
|
---|
| 468 | /**
|
---|
| 469 | * <p>
|
---|
| 470 | * returns the FNR
|
---|
| 471 | * </p>
|
---|
| 472 | *
|
---|
| 473 | * @return the FNR
|
---|
| 474 | */
|
---|
[68] | 475 | public double getFnr() {
|
---|
| 476 | return fnr;
|
---|
| 477 | }
|
---|
[135] | 478 |
|
---|
| 479 | /**
|
---|
| 480 | * <p>
|
---|
| 481 | * sets the FNR
|
---|
| 482 | * </p>
|
---|
| 483 | *
|
---|
| 484 | * @param fnr
|
---|
| 485 | * the FNR
|
---|
| 486 | */
|
---|
[68] | 487 | public void setFnr(double fnr) {
|
---|
| 488 | this.fnr = fnr;
|
---|
| 489 | }
|
---|
[135] | 490 |
|
---|
| 491 | /**
|
---|
| 492 | * <p>
|
---|
| 493 | * returns the TPs
|
---|
| 494 | * </p>
|
---|
| 495 | *
|
---|
| 496 | * @return the TPs
|
---|
| 497 | */
|
---|
[68] | 498 | public double getTp() {
|
---|
| 499 | return tp;
|
---|
| 500 | }
|
---|
[135] | 501 |
|
---|
| 502 | /**
|
---|
| 503 | * <p>
|
---|
| 504 | * sets the TPs
|
---|
| 505 | * </p>
|
---|
| 506 | *
|
---|
| 507 | * @param tp
|
---|
| 508 | * the TPs
|
---|
| 509 | */
|
---|
[68] | 510 | public void setTp(double tp) {
|
---|
| 511 | this.tp = tp;
|
---|
| 512 | }
|
---|
[135] | 513 |
|
---|
| 514 | /**
|
---|
| 515 | * <p>
|
---|
| 516 | * returns the FNs
|
---|
| 517 | * </p>
|
---|
| 518 | *
|
---|
| 519 | * @return the FNs
|
---|
| 520 | */
|
---|
[68] | 521 | public double getFn() {
|
---|
| 522 | return fn;
|
---|
| 523 | }
|
---|
[135] | 524 |
|
---|
| 525 | /**
|
---|
| 526 | * <p>
|
---|
| 527 | * sets the FNs
|
---|
| 528 | * </p>
|
---|
| 529 | *
|
---|
| 530 | * @param fn
|
---|
| 531 | */
|
---|
[68] | 532 | public void setFn(double fn) {
|
---|
| 533 | this.fn = fn;
|
---|
| 534 | }
|
---|
[135] | 535 |
|
---|
| 536 | /**
|
---|
| 537 | * <p>
|
---|
| 538 | * returns the TNs
|
---|
| 539 | * </p>
|
---|
| 540 | *
|
---|
| 541 | * @return the TNs
|
---|
| 542 | */
|
---|
[68] | 543 | public double getTn() {
|
---|
| 544 | return tn;
|
---|
| 545 | }
|
---|
[135] | 546 |
|
---|
| 547 | /**
|
---|
| 548 | * <p>
|
---|
| 549 | * sets the TNs
|
---|
| 550 | * </p>
|
---|
| 551 | *
|
---|
| 552 | * @param tn
|
---|
| 553 | * the TNs
|
---|
| 554 | */
|
---|
[68] | 555 | public void setTn(double tn) {
|
---|
| 556 | this.tn = tn;
|
---|
| 557 | }
|
---|
[135] | 558 |
|
---|
| 559 | /**
|
---|
| 560 | * <p>
|
---|
| 561 | * returns the FPs
|
---|
| 562 | * </p>
|
---|
| 563 | *
|
---|
| 564 | * @return the FPs
|
---|
| 565 | */
|
---|
[68] | 566 | public double getFp() {
|
---|
| 567 | return fp;
|
---|
| 568 | }
|
---|
[135] | 569 |
|
---|
| 570 | /**
|
---|
| 571 | * <p>
|
---|
| 572 | * sets the FPs
|
---|
| 573 | * </p>
|
---|
| 574 | *
|
---|
| 575 | * @param fp
|
---|
| 576 | * the FPs
|
---|
| 577 | */
|
---|
[68] | 578 | public void setFp(double fp) {
|
---|
| 579 | this.fp = fp;
|
---|
| 580 | }
|
---|
| 581 | }
|
---|