Esempio n. 1
0
    def evaluate_cluster_purities_all_states_(self):

        env = LehnertGridworld()
        all_states, all_state_labels = env.get_all_states()

        all_states = np.array(all_states)
        all_state_labels = np.array(all_state_labels)

        _, log_probs = self.model.encode(all_states)
        probs = np.exp(log_probs)

        dataset = ArrayDataset({constants.STATE_LABELS: all_state_labels})

        cluster = Cluster(None, dataset)
        cluster.num_clusters = self.num_components

        cluster_map = cluster.assign_label_to_each_cluster_soft(probs)

        purities, sizes, mean_purity = cluster.evaluate_purity_soft(probs)
        mean_i_purity, i_scores, i_totals = cluster.evaluate_inverse_purity_soft(
            probs, cluster_map)

        self.logger.info("all states mixture soft purity: {:.2f}%".format(
            mean_purity * 100))
        self.logger.info(
            "all states mixture inverse soft purity: {:.2f}%".format(
                mean_i_purity * 100))

        self.saver.save_array_as_txt([mean_purity, mean_i_purity],
                                     "cluster_purity_all_states")
Esempio n. 2
0
    def evaluate_purities_all_states_(self):

        dataset = ArrayDataset({constants.STATE_LABELS: self.all_state_labels})

        cluster = Cluster(None, dataset)
        cluster.num_clusters = len(self.partition)

        probs = np.zeros((len(self.all_states), len(self.partition)))

        for block_idx, block in enumerate(self.partition):
            for state_idx in block:
                probs[state_idx, block_idx] = 1.0

        cluster_map = cluster.assign_label_to_each_cluster_soft(probs)

        purities, sizes, mean_purity = cluster.evaluate_purity_soft(probs)
        mean_i_purity, i_scores, i_totals = cluster.evaluate_inverse_purity_soft(
            probs, cluster_map)

        self.logger.info("state mixture soft purity: {:.2f}%".format(
            mean_purity * 100))
        self.logger.info("state mixture inverse soft purity: {:.2f}%".format(
            mean_i_purity * 100))

        self.saver.save_array_as_txt(
            [mean_purity, mean_i_purity,
             len(self.partition)], "cluster_purity")