Source code for discrimintools.summary._summarydica
# -*- coding: utf-8 -*-
#intern function
from ._eval_predict import eval_predict
[docs]
def summaryDiCA(
obj,digits=4,detailed=False,to_markdown=False,tablefmt="github",**kwargs
):
"""
Printing summaries of Discriminant Correspondence Analysis model.
Parameters
----------
obj : `class <https://docs.python.org/3/tutorial/classes.html>`_
An object of class :class:`~discrimintools.DiCA`.
digits : `int <https://docs.python.org/3/library/functions.html#int>`_, default = 4
The number of decimal printed.
detailed : `bool <https://docs.python.org/3/library/functions.html#bool>`_, default = `False <https://docs.python.org/3/library/constants.html#False>`_
To print detailed summaries.
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.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_divay
>>> from discrimintools import DiCA, summaryDiCA
>>> D = load_divay() # load training data
>>> y, X = D["Region"], D.drop(columns=["Region"]) # split into X and y
>>> clf = DiCA()
>>> clf.fit(X,y)
DiCA()
>>> summaryDiCA(clf)
Discriminant Correspondence Analysis - Results
Class Level Information:
Frequency Proportion Prior Probability
Beaujolais 4 0.3333 0.3333
Loire 4 0.3333 0.3333
Rhone 4 0.3333 0.3333
Importance of components:
Eigenvalue Difference Proportion (%) Cumulative (%)
Can1 0.2519 0.0504 55.5635 55.5635
Can2 0.2014 NaN 44.4365 100.0000
Canonical correlation:
Eigenvalue Total SS Eta Sq. Canonical Correlation
Can1 0.2519 4.0879 0.7394 0.8599
Can2 0.2014 3.4864 0.6934 0.8327
Classification (projection) coefficients:
Can1 Can2
Woody_A -0.3724 -0.0188
Woody_B 0.0204 0.1559
Woody_C 0.3520 -0.1371
Fruity_A 0.3520 -0.1371
Fruity_B 0.0204 0.1559
Fruity_C -0.3724 -0.0188
Sweet_A 0.2017 0.2855
Sweet_B -0.1309 -0.0582
Sweet_C -0.0163 -0.1247
Alcohol_A 0.0558 -0.3276
Alcohol_B -0.1309 -0.0582
Alcohol_C 0.0815 0.6236
Hedonic_A -0.0000 -0.0000
Hedonic_B -0.0000 -0.0000
Hedonic_C -0.0000 -0.0000
Hedonic_D -0.0000 -0.0000
"""
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#check if self is an object of class DiCA
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
if obj.model_ != "dica":
raise ValueError("'self' must be an object of class DiCA")
print(" Discriminant Correspondence Analysis - Results ")
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#class level information
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
print("\nClass Level Information:")
class_infos = obj.classes_.infos.round(decimals=digits)
if to_markdown:
class_infos = class_infos.to_markdown(tablefmt=tablefmt,**kwargs)
print(class_infos)
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#add eigenvalues informations
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
print("\nImportance of components:")
eig = obj.eig_.iloc[:obj.call_.n_components,:].round(decimals=digits)
if to_markdown:
eig = eig.to_markdown(tablefmt=tablefmt,**kwargs)
print(eig)
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#canonical correlation informations
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
print("\nCanonical correlation:")
cancorr = obj.cancorr_.round(decimals=digits)
if to_markdown:
cancorr = cancorr.to_markdown(tablefmt=tablefmt,**kwargs)
print(cancorr)
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#classification coefficients informations
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
print("\nClassification (projection) coefficients:")
proj_coef = obj.cancoef_.projection.round(decimals=digits)
if to_markdown:
proj_coef = proj_coef.to_markdown(tablefmt=tablefmt,**kwargs)
print(proj_coef)
if detailed:
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#classification summary for calibration data
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
eval_predict(obj,digits,to_markdown,tablefmt,**kwargs)