def select_optimal_features_set_using_univariate_feature_selection(
            self, classes):

        print "SELECTING OPTIMAL FEATURES SET USING RECURSIVE FEATURE ELIMINATION"
        print reduce(
            lambda result, class_name: update_and_return_json(
                result, class_name,
                adjust_optimal_features_using_recursive_feature_elimination(
                    class_name, self.mongoCollection.get_all_records())),
            classes, {})
  def select_optimal_features_set_using_univariate_feature_selection(self, classes):

    print "SELECTING OPTIMAL FEATURES SET USING RECURSIVE FEATURE ELIMINATION"
    print reduce(lambda result, class_name:
                 update_and_return_json(result,
                                        class_name,
                                        adjust_optimal_features_using_recursive_feature_elimination(class_name,
                                                                                                    self.mongoCollection.get_all_records())),
                 classes,
                 {})
 def benchmark(self, classes, classification_method, fields):
     all_records = self.mongoCollection.get_all_records()
     if all_records < 2:
         return
     print reduce(
         lambda res, class_name: update_and_return_json(
             res, class_name,
             self.create_accuracy_ranking(all_records, fields, class_name,
                                          classification_method)), classes,
         {})
 def benchmark(self, classes, classification_method, fields):
     all_records = self.mongoCollection.get_all_records()
     if all_records < 2:
         return
     print reduce(
         lambda res, class_name: update_and_return_json(
             res, class_name, self.create_accuracy_ranking(all_records, fields, class_name, classification_method)
         ),
         classes,
         {},
     )
    def create_accuracy_ranking(self, records, features_to_benchmark,
                                class_name, delivered_classification_method):
        def increment_if_successful_classified(score, record, feature):
            if record['classes'][
                    class_name] == delivered_classification_method(
                        record, class_name, feature,
                        [x for x in records if x != record]):
                score += 1
            return score

        return reduce(
            lambda result, feature: update_and_return_json(
                result, feature,
                reduce(
                    lambda score, record: increment_if_successful_classified(
                        score, record, feature), records, 0) /
                (len(records) - 1)), features_to_benchmark, {})
    def create_accuracy_ranking(self, records, features_to_benchmark, class_name, delivered_classification_method):
        def increment_if_successful_classified(score, record, feature):
            if record["classes"][class_name] == delivered_classification_method(
                record, class_name, feature, [x for x in records if x != record]
            ):
                score += 1
            return score

        return reduce(
            lambda result, feature: update_and_return_json(
                result,
                feature,
                reduce(lambda score, record: increment_if_successful_classified(score, record, feature), records, 0)
                / (len(records) - 1),
            ),
            features_to_benchmark,
            {},
        )