예제 #1
0
    def train_model(self, training_ffts, training_labels):
        """
        Takes a set of training examples + corresponding true labels and returns a
        trained SOM and kNN.
        """
        som_size = self.params['som_size']
        som_iterations = self.params['som_iterations']
        som_learning_rate = self.params['som_learning_rate']
        knn_k = self.params['knn_k']

        som = SelfOrganizingMap(size=som_size,
                                n_iterations=som_iterations,
                                learning_rate=som_learning_rate)

        column_vectors = np.hstack(training_ffts).T
        np.random.shuffle(column_vectors)
        som.fit(column_vectors)

        training_sequences = [
            self.sound_fft_to_string(sound_fft, som)
            for sound_fft in training_ffts
        ]
        knn_model = kNN.train(training_sequences, training_labels, knn_k)

        return som, knn_model