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