scoring

cslearn.scoring.order_score_tables(data: DataFrame, strategy='posterior', max_cvars=2, poss_cvars: dict | None = None, alpha_tot=1.0, method='BDeu')[source]

Calculatee the order score tables for a dataset.

Parameters:
  • data (pd.DataFrame) – A dataset.

  • strategy (str, optional) – Defaults to “posterior”.

  • max_cvars (int, optional) – Max number of variables in a context. Defaults to 2.

  • poss_cvars (dict | None, optional) – Dict with possible context variables for a varible. Defaults to None meaning all.

  • alpha_tot (float, optional) – BDeu score parameter (pseudo counts). Defaults to 1.0.

  • method (str, optional) – Scoring method. Defaults to “BDeu”.

Returns:

The order score tables, context score tables, and context counts.

Return type:

tuple

Example

>>> import cslearn.learning as ctl
>>> import cslearn.cstree as ct
>>> import cslearn.scoring as sc
>>> import pp
>>> import numpy as np
>>> import random
>>> np.random.seed(1)
>>> random.seed(1)
>>>
>>> tree = ct.sample_cstree([2,2,2], max_cvars=1, prob_cvar=0.5, prop_nonsingleton=1,
>>>                         labels=["X"+str(i) for i in range(1, 4)])
>>> tree.sample_stage_parameters(1.0)
>>> df = tree.sample(500)
>>> score_table, context_scores, context_counts = sc.order_score_tables(df,
>>>                                                                     max_cvars=1,
>>>                                                                     alpha_tot=1.0,
>>>                                                                     method="BDeu",
>>>                                                                     poss_cvars=None)
>>> print("Order score table:")
>>> pp.pprint(score_table)
>>> print("Context scores:")
>>> pp.pprint(context_scores)
>>> print("Context counts:")
>>> pp.pprint(context_counts)
Order score table:
{'max_cvars': 1,
'poss_cvars': {'X1': ['X2', 'X3'], 'X2': ['X1', 'X3'], 'X3': ['X2', 'X1']},
'scores': {'X1': {'None': -337.8948102114355,
                'X2': -338.07301225936493,
                'X2,X3': -337.66375682421136,
                'X3': -338.04776148301414},
            'X2': {'None': -68.29479077800046,
                'X1': -68.47299282592986,
                'X1,X3': -68.06642821338981,
                'X3': -68.4507053561074},
            'X3': {'None': -321.52156911602725,
                'X1': -321.67452038760587,
                'X1,X2': -321.27075455994964,
                'X2': -321.6774836941342}}}
Context scores:
{'cards': {'X1': 2, 'X2': 2, 'X3': 2},
'max_cvars': 1,
'poss_cvars': {'X1': ['X2', 'X3'], 'X2': ['X1', 'X3'], 'X3': ['X2', 'X1']},
'scores': {'X1': {'None': -336.7961979227674,
                'X2=0': -11.762075046683464,
                'X2=1': -327.19089667302535,
                'X3=0': -116.56072426147412,
                'X3=1': -222.1718285846568},
            'X2': {'None': -67.19617848933235,
                'X1=0': -36.38485547387102,
                'X1=1': -32.96809681240273,
                'X3=0': -17.62998621847001,
                'X3=1': -51.52630149961991},
            'X3': {'None': -320.42295682735914,
                'X1=0': -191.00840864197295,
                'X1=1': -131.3509031087497,
                'X2=0': -9.235342639991355,
                'X2=1': -313.14772341612536}}}
Context counts:
{'cards': {'X1': 2, 'X2': 2, 'X3': 2},
'var_counts': {'X1': {'None': {'context_vars': [], 'counts': {0: 307, 1: 193}},
                    'X2=0': {'context_vars': ['X2'], 'counts': {0: 7, 1: 7}},
                    'X2=1': {'context_vars': ['X2'],
                                'counts': {0: 300, 1: 186}},
                    'X3=0': {'context_vars': ['X3'],
                                'counts': {0: 92, 1: 73}},
                    'X3=1': {'context_vars': ['X3'],
                                'counts': {0: 215, 1: 120}}},
                'X2': {'None': {'context_vars': [], 'counts': {0: 14, 1: 486}},
                    'X1=0': {'context_vars': ['X1'],
                                'counts': {0: 7, 1: 300}},
                    'X1=1': {'context_vars': ['X1'],
                                'counts': {0: 7, 1: 186}},
                    'X3=0': {'context_vars': ['X3'],
                                'counts': {0: 3, 1: 162}},
                    'X3=1': {'context_vars': ['X3'],
                                'counts': {0: 11, 1: 324}}},
                'X3': {'None': {'context_vars': [], 'counts': {0: 165, 1: 335}},
                    'X1=0': {'context_vars': ['X1'],
                                'counts': {0: 92, 1: 215}},
                    'X1=1': {'context_vars': ['X1'],
                                'counts': {0: 73, 1: 120}},
                    'X2=0': {'context_vars': ['X2'],
                                'counts': {0: 3, 1: 11}},
                    'X2=1': {'context_vars': ['X2'],
                                'counts': {0: 162, 1: 324}}}}}
cslearn.scoring.score_order(order, order_scores)[source]

Scores an order using the order score tables. The score is the sum of the individual variable scores for each level.

Parameters:
  • order (list) – List of variables in the order.

  • order_scores (dict) – Order scores.

Returns:

Score of an order.

Return type:

double

Example

>>> import cslearn.learning as ctl
>>> import cslearn.cstree as ct
>>> import cslearn.scoring as sc
>>> import pp
>>> import numpy as np
>>> import random
>>> np.random.seed(1)
>>> random.seed(1)
>>>
>>> tree = ct.sample_cstree([2,2,2], max_cvars=1, prob_cvar=0.5, prop_nonsingleton=1,
>>>                          labels=["X"+str(i) for i in range(1, 4)])
>>> tree.sample_stage_parameters(1.0)
>>> df = tree.sample(500)
>>> score_table, context_scores, context_counts = sc.order_score_tables(df,
>>>                                                                     max_cvars=1,
>>>                                                                     alpha_tot=1.0,
>>>                                                                     method="BDeu",
>>>                                                                     poss_cvars=None)
>>> sc.score_order(["X3","X2","X1"], score_table)
-727.636031296346