Ejemplo n.º 1
0
def superlayeredNN_hyperparameters_tuning():

    #epigeneticsData = EmbryoDevelopmentDataWithClusters(2, 3, 256, 6)

    epigeneticsData = CancerDataWithModalities(5)
    training_dataset, validation_dataset, test_dataset = epigeneticsData.get_training_validation_test_datasets(
    )
    clusters_size = epigeneticsData.clusters_size
    output_size = epigeneticsData.output_size
    """superlayered_nn = SuperlayeredNeuralNetwork(
            [clusters_size[0], clusters_size[1]],
            [[512, 256, 128, 64], [512, 256, 128, 64]],
            [128, 64],
            output_size)"""

    superlayered_nn = SuperlayeredNeuralNetwork(
        [clusters_size[0], clusters_size[1]],
        [[64, 256, 128, 16], [64, 256, 128, 16]], [64, 16], output_size)

    learning_rate = 0.02
    weight_decay = 0.01
    keep_probability = 0.50

    training_accuracy, validation_accuracy, steps_list, test_accuracy = superlayered_nn.train_validate_test(
        training_dataset, validation_dataset, test_dataset, learning_rate,
        weight_decay, keep_probability)

    plot_training_accuracy_and_validation_accuracy(training_accuracy,
                                                   validation_accuracy,
                                                   steps_list)
Ejemplo n.º 2
0
    def test_SNN(self):
        superlayered_nn = SuperlayeredNeuralNetwork(
            [cluster_1_num_genes, cluster_2_num_genes],
            [[256, 128, 64, 32], [256, 128, 64, 32]], [128, 32], num_classes)
        learning_rate = 0.05
        weight_decay = 0.05
        keep_probability = 0.5

        validation_accuraty, confussion_matrix, ROC_points = superlayered_nn.train_and_evaluate(
            self.training_dataset_with_clusters,
            self.validation_dataset_with_clusters, learning_rate, weight_decay,
            keep_probability)

        print confussion_matrix
Ejemplo n.º 3
0
def evaluate_superlayered_neural_network(epigenetic_data_with_clusters):

    print "-------------------------------------------------------------------------------"
    print "-------------------Evaluating Superlayered Neural Network----------------------"
    print "-------------------------------------------------------------------------------"

    clusters_size = epigenetic_data_with_clusters.clusters_size
    output_size = epigenetic_data_with_clusters.output_size
    """superlayered_neural_network = SuperlayeredNeuralNetwork(
        [clusters_size[0], clusters_size[1]],
        [[256, 128, 64, 32], [256, 128, 64, 32]],
        [128, 32], output_size)"""

    superlayered_neural_network = SuperlayeredNeuralNetwork(
        [clusters_size[0], clusters_size[1]],
        [[512, 256, 128, 64], [512, 256, 128, 64]], [256, 64], output_size)
    """superlayered_neural_network = SuperlayeredNeuralNetwork(
        [clusters_size[0], clusters_size[1]],
        [[512, 256, 128, 64], [512, 256, 128, 64]],
        [256, 64], output_size)"""

    confussion_matrix, ROC_points, performance_metrics = nested_cross_validation_on_SNN(
        superlayered_neural_network, epigenetic_data_with_clusters)

    label_to_one_hot_encoding = epigenetic_data_with_clusters.label_to_one_hot_encoding
    class_id_to_symbol_id = compute_class_id_to_class_symbol(
        label_to_one_hot_encoding)
    class_symbol_to_evaluation_matrix = compute_evaluation_metrics_for_each_class(
        confussion_matrix, class_id_to_symbol_id)

    #plot_confussion_matrix_as_heatmap(confussion_matrix, label_to_one_hot_encoding, 'Confusion Matrix for SNN')
    #plot_ROC_curves(ROC_points)

    return confussion_matrix, ROC_points, performance_metrics
Ejemplo n.º 4
0
def plot_keep_probability(epigenetic_data, epigenetic_data_with_clusters):

    _, k_fold_datasets_hyperparameters_tuning = epigenetic_data.get_k_fold_datasets(
    )
    input_data_size = epigenetic_data.input_size
    output_size = epigenetic_data.output_size
    MLP = MultilayerPerceptron(input_data_size, [128, 64, 32, 16], output_size)
    RNN = RecurrentNeuralNetwork(input_sequence_length=input_data_size / 4,
                                 input_step_size=4,
                                 LSTM_units_state_size=[16, 64],
                                 hidden_units=[32, 16],
                                 output_size=output_size)
    print("Got here")
    keep_probability_plots(MLP, k_fold_datasets_hyperparameters_tuning, 0.05,
                           'mlp_kp')
    keep_probability_plots(RNN, k_fold_datasets_hyperparameters_tuning, 0.0001,
                           'rnn_kp')

    k_fold_datasets, k_fold_datasets_hyperparameters_tuning = epigenetic_data_with_clusters.get_k_fold_datasets(
    )
    clusters_size = epigenetic_data_with_clusters.clusters_size
    output_size = epigenetic_data_with_clusters.output_size
    SNN = SuperlayeredNeuralNetwork([clusters_size[0], clusters_size[1]],
                                    [[128, 64, 32, 16], [128, 64, 32, 16]],
                                    [32, 16], output_size)

    keep_probability_plots(SNN, k_fold_datasets_hyperparameters_tuning, 0.05,
                           'snn_kp')
Ejemplo n.º 5
0
def plot_learning_rate(epigenetic_data, epigenetic_data_with_clusters):

    _, k_fold_datasets_hyperparameters_tuning = epigenetic_data.get_k_fold_datasets(
    )
    input_data_size = epigenetic_data.input_size
    output_size = epigenetic_data.output_size
    MLP = MultilayerPerceptron(input_data_size, [256, 128, 64, 32],
                               output_size)
    RNN = RecurrentNeuralNetwork(input_sequence_length=input_data_size / 4,
                                 input_step_size=4,
                                 LSTM_units_state_size=[32, 128],
                                 hidden_units=[128, 32],
                                 output_size=output_size)

    #learning_rate_plots(MLP, k_fold_datasets_hyperparameters_tuning, 'mlp_ln')
    #learning_rate_plots(RNN, k_fold_datasets_hyperparameters_tuning, 'rnn_ln')

    k_fold_datasets, k_fold_datasets_hyperparameters_tuning = epigenetic_data_with_clusters.get_k_fold_datasets(
    )
    clusters_size = epigenetic_data_with_clusters.clusters_size
    output_size = epigenetic_data_with_clusters.output_size
    SNN = SuperlayeredNeuralNetwork([clusters_size[0], clusters_size[1]],
                                    [[128, 64, 32, 16], [128, 64, 32, 16]],
                                    [32, 16], output_size)

    learning_rate_plots(SNN, k_fold_datasets_hyperparameters_tuning, 'snn_ln')