コード例 #1
0
	def cluster_metrics(self):
		labels_true, labels_pred_1, labels_pred_2 = self.prepare_labels()

		metric_funcs = [adjusted_rand_score, adjusted_mutual_info_score, normalized_mutual_info_score, 
		mutual_info_score, homogeneity_score, completeness_score]

		# ------ Label-based metrics ------
		self.file.write("\n\nPred = L2 Milestones       Pred= L1 Labels     Metric\n\n")

		for metric in metric_funcs:

			try:
				score_1 = utils.nsf(metric(labels_true, labels_pred_1))
				score_2 = utils.nsf(metric(labels_true, labels_pred_2))

			except ValueError as e:
				print e
				print "Pruning error"
				sys.exit()
			key =  repr(metric).split()[1]
			self.label_based_scores_1[key] = score_1
			self.label_based_scores_2[key] = score_2

			self.file.write("%3.3f        %3.3f        %s\n" % (score_1, score_2, key))

		# ------ Precision & Recall ------
		try:
			for ave in ["micro", "macro", "weighted"]:
				key = "precision_" + ave
				score_1 = utils.nsf(precision_score(labels_true, labels_pred_1, average = ave))
				score_2 = utils.nsf(precision_score(labels_true, labels_pred_2, average = ave))

				self.label_based_scores_1[key] = score_1
				self.label_based_scores_2[key] = score_2

				self.file.write("%3.3f        %3.3f        %s\n" % (score_1, score_2, key))

				key = "recall_" + ave
				score_1 = utils.nsf(recall_score(labels_true, labels_pred_1, average = ave))
				score_2 = utils.nsf(recall_score(labels_true, labels_pred_2, average = ave))

				self.label_based_scores_1[key] = score_1
				self.label_based_scores_2[key] = score_2

				self.file.write("%3.3f        %3.3f        %s\n" % (score_1, score_2, key))

		except ValueError as e:
			print e
			print "Pruning error"
			sys.exit()

		self.file.write("\nSilhouette Scores Global\n")

		# ------ Silhouette Scores ------
		for layer in sorted(self.silhouette_scores_global):
			score = self.silhouette_scores_global[layer]
			self.file.write("%3.3f        %s\n" % (round(Decimal(score), 2), layer))

		self.file.write("\nSilhouette Scores Weighted\n")

		# ------ Silhouette Scores ------
		for layer in sorted(self.silhouette_scores_weighted):
			score = self.silhouette_scores_weighted[layer]
			self.file.write("%3.3f        %s\n" % (round(Decimal(score), 2), layer))


		self.file.write("\nDunn Scores1\n")

		# ------ Dunn Scores ------
		for layer in sorted(self.dunn_scores_1):
			score = self.dunn_scores_1[layer]
			self.file.write("%3.3f        %s\n" % (round(Decimal(score), 2), layer))

		self.file.write("\nDunn Scores2\n")

		# ------ Dunn Scores ------
		for layer in sorted(self.dunn_scores_2):
			score = self.dunn_scores_2[layer]
			self.file.write("%3.3f        %s\n" % (round(Decimal(score), 2), layer))

		self.file.write("\nDunn Scores3\n")

		# ------ Dunn Scores ------
		for layer in sorted(self.dunn_scores_3):
			score = self.dunn_scores_3[layer]
			self.file.write("%3.3f        %s\n" % (round(Decimal(score), 2), layer))


		# ------ Visualizing changepoints on broken barh ------
		viz = {}

		for cp in self.list_of_cp:
			cp_all_data = (self.map_cp2frm[cp], self.map_cp2milestones[cp], self.map_cp2level1[cp],
				self.map_cp2surgemes[cp], self.map_cp2surgemetransitions[cp])
			utils.dict_insert_list(self.map_cp2demonstrations[cp], cp_all_data, viz)

		data = [self.label_based_scores_1, self.label_based_scores_2,
		self.silhouette_scores_global, self.dunn_scores_1, self.dunn_scores_2, self.dunn_scores_3,
		self.level2_silhoutte_global, self.level2_dunn_1, self.level2_dunn_2, self.level2_dunn_3, viz,
		self.silhouette_scores_weighted, self.level2_silhoutte_weighted]

		pickle.dump(data, open(self.metrics_picklefile, "wb"))

		return data
コード例 #2
0
	def cluster_metrics(self):
		"""
		Computes metrics and returns as single dictionary.
		"""
		labels_true, labels_pred = self.prepare_labels()

		metric_funcs = [adjusted_rand_score, adjusted_mutual_info_score, normalized_mutual_info_score, 
		mutual_info_score, homogeneity_score, completeness_score]

		# ------ Label-based metrics ------
		utils.print_and_write("\n\nPred= L1 Labels     Metric\n\n", self.log)

		for metric in metric_funcs:

			score_1 = round(Decimal(metric(labels_true, labels_pred)), 2)
			key =  repr(metric).split()[1]
			self.label_based_scores_1[key] = score_1

			utils.print_and_write(("%3.3f        %s\n" % (score_1, key)), self.log)

		# ------ Precision & Recall ------
		utils.print_and_write("\n Precision & Recall scores \n", self.log)
		for ave in ["micro", "macro", "weighted"]:
			key = "precision_" + ave
			score_1 = utils.nsf(precision_score(labels_true, labels_pred, average = ave))

			self.label_based_scores_1[key] = score_1

			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score_1), 2), key), self.log)

			key = "recall_" + ave
			score_1 = utils.nsf(recall_score(labels_true, labels_pred, average = ave))

			self.label_based_scores_1[key] = score_1

			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score_1), 2), key), self.log)

		utils.print_and_write("\nDunn Scores1\n", self.log)

		# ------ Dunn Scores # 1------
		for layer in sorted(self.dunn_scores_1):
			score = self.dunn_scores_1[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		utils.print_and_write("\nDunn Scores2\n", self.log)

		# ------ Dunn Scores # 2------
		for layer in sorted(self.dunn_scores_2):
			score = self.dunn_scores_2[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		utils.print_and_write("\nDunn Scores3\n", self.log)

		# ------ Dunn Scores #3 ------
		for layer in sorted(self.dunn_scores_3):
			score = self.dunn_scores_3[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		# ------ Visualizing changepoints on broken barh ------
		viz = {}

		for cp in self.list_of_cp:
			cp_all_data = (self.map_cp2frm[cp], self.map_cp2cluster[cp], self.map_cp2surgemetransitions[cp], self.map_cp2surgemes[cp])
			utils.dict_insert_list(self.map_cp2demonstrations[cp], cp_all_data, viz)

		data = [self.label_based_scores_1, self.silhouette_score_global, self.dunn_scores_1,
		self.dunn_scores_2, self.dunn_scores_3, viz, self.silhouette_score_weighted]

		return data
コード例 #3
0
    def cluster_metrics(self):
        labels_true, labels_pred_1, labels_pred_2 = self.prepare_labels()

        metric_funcs = [
            adjusted_rand_score, adjusted_mutual_info_score,
            normalized_mutual_info_score, mutual_info_score, homogeneity_score,
            completeness_score
        ]

        # ------ Label-based metrics ------
        self.file.write(
            "\n\nPred = L2 Milestones       Pred= L1 Labels     Metric\n\n")

        for metric in metric_funcs:

            try:
                score_1 = utils.nsf(metric(labels_true, labels_pred_1))
                score_2 = utils.nsf(metric(labels_true, labels_pred_2))

            except ValueError as e:
                print e
                print "Pruning error"
                sys.exit()
            key = repr(metric).split()[1]
            self.label_based_scores_1[key] = score_1
            self.label_based_scores_2[key] = score_2

            self.file.write("%3.3f        %3.3f        %s\n" %
                            (score_1, score_2, key))

        # ------ Precision & Recall ------
        try:
            for ave in ["micro", "macro", "weighted"]:
                key = "precision_" + ave
                score_1 = utils.nsf(
                    precision_score(labels_true, labels_pred_1, average=ave))
                score_2 = utils.nsf(
                    precision_score(labels_true, labels_pred_2, average=ave))

                self.label_based_scores_1[key] = score_1
                self.label_based_scores_2[key] = score_2

                self.file.write("%3.3f        %3.3f        %s\n" %
                                (score_1, score_2, key))

                key = "recall_" + ave
                score_1 = utils.nsf(
                    recall_score(labels_true, labels_pred_1, average=ave))
                score_2 = utils.nsf(
                    recall_score(labels_true, labels_pred_2, average=ave))

                self.label_based_scores_1[key] = score_1
                self.label_based_scores_2[key] = score_2

                self.file.write("%3.3f        %3.3f        %s\n" %
                                (score_1, score_2, key))

        except ValueError as e:
            print e
            print "Pruning error"
            sys.exit()

        self.file.write("\nSilhouette Scores Global\n")

        # ------ Silhouette Scores ------
        for layer in sorted(self.silhouette_scores_global):
            score = self.silhouette_scores_global[layer]
            self.file.write("%3.3f        %s\n" %
                            (round(Decimal(score), 2), layer))

        self.file.write("\nSilhouette Scores Weighted\n")

        # ------ Silhouette Scores ------
        for layer in sorted(self.silhouette_scores_weighted):
            score = self.silhouette_scores_weighted[layer]
            self.file.write("%3.3f        %s\n" %
                            (round(Decimal(score), 2), layer))

        self.file.write("\nDunn Scores1\n")

        # ------ Dunn Scores ------
        for layer in sorted(self.dunn_scores_1):
            score = self.dunn_scores_1[layer]
            self.file.write("%3.3f        %s\n" %
                            (round(Decimal(score), 2), layer))

        self.file.write("\nDunn Scores2\n")

        # ------ Dunn Scores ------
        for layer in sorted(self.dunn_scores_2):
            score = self.dunn_scores_2[layer]
            self.file.write("%3.3f        %s\n" %
                            (round(Decimal(score), 2), layer))

        self.file.write("\nDunn Scores3\n")

        # ------ Dunn Scores ------
        for layer in sorted(self.dunn_scores_3):
            score = self.dunn_scores_3[layer]
            self.file.write("%3.3f        %s\n" %
                            (round(Decimal(score), 2), layer))

        # ------ Visualizing changepoints on broken barh ------
        viz = {}

        for cp in self.list_of_cp:
            cp_all_data = (self.map_cp2frm[cp], self.map_cp2milestones[cp],
                           self.map_cp2level1[cp], self.map_cp2surgemes[cp],
                           self.map_cp2surgemetransitions[cp])
            utils.dict_insert_list(self.map_cp2demonstrations[cp], cp_all_data,
                                   viz)

        data = [
            self.label_based_scores_1, self.label_based_scores_2,
            self.silhouette_scores_global, self.dunn_scores_1,
            self.dunn_scores_2, self.dunn_scores_3,
            self.level2_silhoutte_global, self.level2_dunn_1,
            self.level2_dunn_2, self.level2_dunn_3, viz,
            self.silhouette_scores_weighted, self.level2_silhoutte_weighted
        ]

        pickle.dump(data, open(self.metrics_picklefile, "wb"))

        return data
コード例 #4
0
	def cluster_metrics(self):
		"""
		Computes metrics and returns as single dictionary.
		"""
		labels_true, labels_pred = self.prepare_labels()

		metric_funcs = [adjusted_rand_score, adjusted_mutual_info_score, normalized_mutual_info_score, 
		mutual_info_score, homogeneity_score, completeness_score]

		# ------ Label-based metrics ------
		utils.print_and_write("\n\nPred= L1 Labels     Metric\n\n", self.log)

		for metric in metric_funcs:

			score_1 = round(Decimal(metric(labels_true, labels_pred)), 2)
			key =  repr(metric).split()[1]
			self.label_based_scores_1[key] = score_1

			utils.print_and_write(("%3.3f        %s\n" % (score_1, key)), self.log)

		# ------ Precision & Recall ------
		utils.print_and_write("\n Precision & Recall scores \n", self.log)
		for ave in ["micro", "macro", "weighted"]:
			key = "precision_" + ave
			score_1 = utils.nsf(precision_score(labels_true, labels_pred, average = ave))

			self.label_based_scores_1[key] = score_1

			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score_1), 2), key), self.log)

			key = "recall_" + ave
			score_1 = utils.nsf(recall_score(labels_true, labels_pred, average = ave))

			self.label_based_scores_1[key] = score_1

			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score_1), 2), key), self.log)

		utils.print_and_write("\nDunn Scores1\n", self.log)

		# ------ Dunn Scores # 1------
		for layer in sorted(self.dunn_scores_1):
			score = self.dunn_scores_1[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		utils.print_and_write("\nDunn Scores2\n", self.log)

		# ------ Dunn Scores # 2------
		for layer in sorted(self.dunn_scores_2):
			score = self.dunn_scores_2[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		utils.print_and_write("\nDunn Scores3\n", self.log)

		# ------ Dunn Scores #3 ------
		for layer in sorted(self.dunn_scores_3):
			score = self.dunn_scores_3[layer]
			utils.print_and_write("%3.3f        %s\n" % (round(Decimal(score), 2), layer), self.log)

		# ------ Visualizing changepoints on broken barh ------
		viz = {}

		for cp in self.list_of_cp:
			cp_all_data = (self.map_cp2frm[cp], self.map_cp2cluster[cp], self.map_cp2surgemetransitions[cp], self.map_cp2surgemes[cp])
			utils.dict_insert_list(self.map_cp2demonstrations[cp], cp_all_data, viz)

		data = [self.label_based_scores_1, self.silhouette_score_global, self.dunn_scores_1,
		self.dunn_scores_2, self.dunn_scores_3, viz, self.silhouette_score_weighted]

		return data