示例#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
示例#2
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
    h, w, d = neurons.shape
    hexmap = np.apply_along_axis(rgb2hex, 1, neurons.reshape(-1, 3) / 256)
    index = np.arange(h * w).reshape(h, w)
    pl.pcolor(index, cmap=ListedColormap(hexmap), norm=NoNorm())

train = np.array([[0, 0, 0],       # black
                  [255, 255, 255], # white
                  [255, 0, 0],     # red
                  [0, 255, 0],     # green
                  [0, 0, 255],     # blue
                  [255, 255, 0],   # yellow
                  [0, 255, 255],   # cyan
                  [255, 0, 255]])  # magenta

init = np.random.rand(16, 16, 3) * 255

pl.subplot(1, 2, 1, aspect='equal')
plot(init)
pl.title('Initial map')

som = SelfOrganizingMap(init, n_iterations=1024,
                        init='matrix', learning_rate=1)
som.fit(train)

pl.subplot(1, 2, 2, aspect='equal')
plot(som.neurons_)
pl.title('Organized Map')
F = pl.gcf()
F.set_size_inches((40, 20))
pl.show()
示例#4
0
n_samples, n_features = data.shape
n_digits = len(np.unique(digits.target))

print "Digits dataset"
print "n_digits   : %d" % n_digits
print "n_features : %d" % n_features
print "n_samples  : %d" % n_samples
print

################################################################################
# Digits dataset clustering using Self-Organizing Map

print "Self-Organizing Map "
t0 = time()
grid_width = 4
som = SelfOrganizingMap(size=grid_width, n_iterations=n_samples*5,
                        learning_rate=1)
som.fit(data)
print "done in %0.3fs" % (time() - t0)
print

F = pseudo_F(data, som.labels_, som.neurons_)
print 'pseudo_F %0.2f | %0.2f%%' % (F, 100 * (F / (1 + F)))
print

################################################################################
# Digits dataset clustering using Kmeans

print "KMeans "
t0 = time()
km = KMeans(init='k-means++', k=grid_width**2, n_init=10)
km.fit(data)