Source code for discrimintools.summary._eval_predict

# -*- coding: utf-8 -*-
[docs] def eval_predict( obj,digits=4,to_markdown=False,tablefmt="github",**kwargs ): """ Evaluation of the prediction' quality on training dataset. Parameters ---------- obj : `class <https://docs.python.org/3/tutorial/classes.html>`_ an object of class :class:`~discrimintools.CANDISC`, :class:`~discrimintools.CPLS`, :class:`~discrimintools.DiCA`, :class:`~discrimintools.DISCRIM`, :class:`~discrimintools.GFALDA`, :class:`~discrimintools.MDA`, :class:`~discrimintools.PLSDA` or :class:`~discrimintools.PLSLDA`. digits : `int <https://docs.python.org/3/library/functions.html#int>`_, default = 4 The number of decimal printed. to_markdown: `bool <https://docs.python.org/3/library/functions.html#bool>`_, default = `False <https://docs.python.org/3/library/constants.html#False>`_ To print summaries in `markdown <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_markdown.html>`_-friendly format. Requires the `tabulate <https://pypi.org/project/tabulate/>`_. package. tablefmt : `str <https://docs.python.org/3/library/functions.html#func-str>`_, default = "github" The table format. **kwargs : additionals parameters. These parameters will be passed to `tabulate <https://pypi.org/project/tabulate/>`_. Returns ------- NoneType See also -------- :class:`~discrimintools.summaryCANDISC` Printing summaries of Canonical Discriminant Analysis model. :class:`~discrimintools.summaryCPLS` Printing summaries of Partial Least Squares for Classification model. :class:`~discrimintools.summaryDA` Printing summaries of Discriminant Analysis model. :class:`~discrimintools.summaryDiCA` Printing summaries of Discriminant Correspondence Analysis model. :class:`~discrimintools.summaryDISCRIM` Printing summaries of Discriminant Analysis (linear and quadratic) model. :class:`~discrimintools.summaryGFALDA` Printing summaries of General Factor Analysis Linear Discriminant Analysis model. :class:`~discrimintools.summaryMDA` Printing summaries of Mixed Discriminant Analysis model. :class:`~discrimintools.summaryPLSDA` Printing summaries of Partial Least Squares Discriminant Analysis model. :class:`~discrimintools.summaryPLSLDA` Printing summaries of Partial Least Squares Linear Discriminant Analysis model. :class:`~discrimintools.summarySTEPDISC` Printing summaries of Stepwise Discriminant Analysis model. Examples -------- >>> from discrimintools.datasets import load_heart >>> from discrimintools import DISCRIM, eval_predict >>> D = load_heart() # load training data >>> y, X = D["disease"], D.drop(columns=["disease"]) # split into X and y >>> clf = DISCRIM() >>> clf.fit(X,y) Categorical features have been encoded into binary variables. DISCRIM(priors='prop') >>> eval_predict(clf) Classification Summary for Calibration Data: Observation Profile: Read Used Number of Observations 150 150 Number of Observations Classified into disease: prediction absence presence Total disease absence 75 7 82 presence 12 56 68 Total 87 63 150 Percent Classified into disease: prediction absence presence Total disease absence 91.4634 8.5366 100.0 presence 17.6471 82.3529 100.0 Total 58.0000 42.0000 100.0 Priors 0.5467 0.4533 NaN Error Count Estimates for disease: absence presence Total Rate 0.0854 0.1765 0.1267 Priors 0.5467 0.4533 NaN Classification Report for disease: precision recall f1-score support absence 0.8621 0.9146 0.8876 82.0000 presence 0.8889 0.8235 0.8550 68.0000 accuracy 0.8733 0.8733 0.8733 0.8733 macro avg 0.8755 0.8691 0.8713 150.0000 weighted avg 0.8742 0.8733 0.8728 150.0000 """ #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- #classification summary for calibration data #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- print("\nClassification Summary for Calibration Data:\n") evl = obj.eval_predict(obj.call_.Xtot,obj.call_.y,verbose=False) print("Observation Profile:") obs = evl.obs if to_markdown: obs = obs.to_markdown(tablefmt=tablefmt,**kwargs) print(obs) print("\nNumber of Observations Classified into {}:".format(obj.call_.target)) cm = evl.cm if to_markdown: cm = cm.to_markdown(tablefmt=tablefmt,**kwargs) print(cm) print("\nPercent Classified into {}:".format(obj.call_.target)) resub = evl.resub.round(decimals=digits) if to_markdown: resub = resub.to_markdown(tablefmt=tablefmt,**kwargs) print(resub) print("\nError Count Estimates for {}:".format(obj.call_.target)) error = evl.error.round(decimals=digits) if to_markdown: error = error.to_markdown(tablefmt=tablefmt,**kwargs) print(error) print("\nClassification Report for {}:".format(obj.call_.target)) report = evl.report.round(decimals=digits) if to_markdown: report = report.to_markdown(tablefmt=tablefmt,**kwargs) print(report)