コード例 #1
0
ファイル: causal_learning.py プロジェクト: kabramova/easl
    def compute_conditional_probability_distribution(variables, data, motor, conditioned):
        """
        """
        freq, n = DistributionComputer.compute_frequency_table(variables, data, motor)

        # Total number of occurences with only exploration variables
        totals = SparseTable({k: v for k, v in variables.iteritems()
                              if k not in conditioned})

        jpd = SparseConditionalTable(variables, {k: v for k, v in variables.iteritems() if k not in conditioned})

        # Make conditional on exploration variables
        # i.e. divide by total number of
        for entry in freq.get_nonzero_entries():
            filtered = {k: v for k, v in entry.iteritems() if k not in conditioned}
            # Add the values to increase the total
            totals.set_value(filtered, totals.get_value(filtered) + freq.get_value(entry))

        # Make conditional table by dividing by subtotals
        for entry in freq.get_nonzero_entries():
            filtered = {k: v for k, v in entry.iteritems() if k not in conditioned}

            # P(M|R) = F(M&R) / F(R)
            f_r = float(totals.get_value(filtered))
            jpd.set_value(entry, 0 if f_r == 0 else freq.get_value(entry) / f_r)

        return jpd
コード例 #2
0
ファイル: causal_learning.py プロジェクト: kabramova/easl
    def compute_frequency_table(variables, data, motor):
        """
        Parameters
        ----------
        variables : [string]
        data : Data
        motor : [string]
        """
        freq = SparseTable(variables)

        first = 2
        last = data.last_time() + 1

        n = 0

        for t_i in range(first, last):
            n += 1
            freq.inc_value(data.get_entries_previous_current(t_i, variables.keys(), motor))

        return freq, n
コード例 #3
0
ファイル: causal_learning.py プロジェクト: katsangati/easl
    def compute_frequency_table(variables, data, motor):
        """
        Parameters
        ----------
        variables : [string]
        data : Data
        motor : [string]
        """
        freq = SparseTable(variables)

        first = 2
        last = data.last_time() + 1

        n = 0

        for t_i in range(first, last):
            n += 1
            freq.inc_value(
                data.get_entries_previous_current(t_i, variables.keys(),
                                                  motor))

        return freq, n
コード例 #4
0
ファイル: causal_learning.py プロジェクト: katsangati/easl
    def compute_conditional_probability_distribution(variables, data, motor,
                                                     conditioned):
        """
        """
        freq, n = DistributionComputer.compute_frequency_table(
            variables, data, motor)

        # Total number of occurences with only exploration variables
        totals = SparseTable(
            {k: v
             for k, v in variables.iteritems() if k not in conditioned})

        jpd = SparseConditionalTable(
            variables,
            {k: v
             for k, v in variables.iteritems() if k not in conditioned})

        # Make conditional on exploration variables
        # i.e. divide by total number of
        for entry in freq.get_nonzero_entries():
            filtered = {
                k: v
                for k, v in entry.iteritems() if k not in conditioned
            }
            # Add the values to increase the total
            totals.set_value(
                filtered,
                totals.get_value(filtered) + freq.get_value(entry))

        # Make conditional table by dividing by subtotals
        for entry in freq.get_nonzero_entries():
            filtered = {
                k: v
                for k, v in entry.iteritems() if k not in conditioned
            }

            # P(M|R) = F(M&R) / F(R)
            f_r = float(totals.get_value(filtered))
            jpd.set_value(entry,
                          0 if f_r == 0 else freq.get_value(entry) / f_r)

        return jpd