def feature_selection(features, targets, dataset, target, dt, knn, svm): [known_dataset, known_targets, unk] = split_dataset(dataset, targets) known_targets = np.asarray(known_targets) nr_times = int(math.floor(TOP_FEATURES_PERCENTAGE_THRESHOLD * len(features))) if target == 'civil': ssa_features = get_best(civil_all, civil_all_x, civil_all_y, nr_times) else: ssa_features = get_best(highval_all, highval_all_x, highval_all_y, nr_times) sf = SelectedFeatures(known_dataset, known_targets, ssa_features, features) ssa_dataset = sf.extract_data_from_selected_features() std = StandardizedData(known_targets, ssa_dataset) ssa_dataset_scaled, known_targets_scaled = std.split_and_standardize_dataset() assert not set(known_targets).isdisjoint(known_targets_scaled) file_name = "ensemble_single_" + target + ".txt" for i in range(100): cv10_ensemble(ssa_dataset, known_targets, ssa_dataset_scaled, dt, knn, svm, prt=True, file_name=file_name) print '####### FEATURES ####### %d \n %s' % (len(ssa_features), str(ssa_features))
def feature_selection_before_ensemble(features, targets, dataset, percentage, dt, knn, svm, prt=False, file_name=None): [known_dataset, known_targets, unk] = split_dataset(dataset, targets) known_targets = np.asarray(known_targets) # these come from feature_selection_cv # commented out because they were saved to decrease computation time # cv_features = features_cross_validation(known_dataset, known_targets, features) # selected_features = select_final_features_from_cv(cv_features, percentage) selected_features = select_features(percentage) sf = SelectedFeatures(known_dataset, known_targets, selected_features, features) known_dataset = sf.extract_data_from_selected_features() std = StandardizedData(known_targets, known_dataset) known_dataset_scaled, known_targets = std.split_and_standardize_dataset() cv10_ensemble(np.array(known_dataset), np.array(known_targets), known_dataset_scaled, dt, knn, svm, prt, file_name) print '####### FEATURES ####### %d \n %s' % (len(selected_features), str(selected_features))
from project_data import * from parse_theme import * from standardized_data import * from split_dataset import * from cv import cv10_ensemble from cv import dt from cv import knn from svms import svm_all_vars import numpy as np if __name__ == "__main__": spreadsheet = Spreadsheet(project_data_file) data = Data(spreadsheet) targets = data.targets ids = data.ids try: [dataset, features] = parse_theme(sys.argv[1]) [known_dataset, known_targets, unk] = split_dataset(dataset, targets) [dataset, features] = parse_theme(sys.argv[1]) std = StandardizedData(targets, dataset) known_dataset_scaled, known_targets = std.split_and_standardize_dataset() for i in range(100): cv10_ensemble(np.array(known_dataset), np.array(known_targets), known_dataset_scaled, dt, knn, svm_all_vars, prt=True, file_name="single_ensemble.txt") except IndexError: print "Error!! Pass 'all' as argument"