Я использую DEC от mxnet (https://github.com/apache/incubator-mxnet/tree/master/example/deep-embedded-clustering)
Хотя по умолчанию он работает в MNIST, я изменил источник данных на несколько сотен документов (что должно быть прекрасно, учитывая, что mxnet может работать с набором данных Reuters)
Вопрос; после обучения MXNET, как я могу использовать его на новых, невидимых данных? Каждый раз он показывает мне новый прогноз!
Вот код для сбора набора данных:
vectorizer = TfidfVectorizer(dtype=np.float64, stop_words='english', max_features=2000, norm='l2', sublinear_tf=True).fit(training)
X = vectorizer.transform(training)
X = np.asarray(X.todense()) # * np.sqrt(X.shape[1])
Y = np.asarray(labels)
Вот код для прогноза:
def predict(self, TrainX, X, update_interval=None):
N = TrainX.shape[0]
if not update_interval:
update_interval = N
batch_size = 256
test_iter = mx.io.NDArrayIter({'data': TrainX}, batch_size=batch_size, shuffle=False,
last_batch_handle='pad')
args = {k: mx.nd.array(v.asnumpy(), ctx=self.xpu) for k, v in self.args.items()}
z = list(model.extract_feature(self.feature, args, None, test_iter, N, self.xpu).values())[0]
kmeans = KMeans(self.num_centers, n_init=20)
kmeans.fit(z)
args['dec_mu'][:] = kmeans.cluster_centers_
print(args)
sample_iter = mx.io.NDArrayIter({'data': X})
z = list(model.extract_feature(self.feature, args, None, sample_iter, N, self.xpu).values())[0]
p = np.zeros((z.shape[0], self.num_centers))
self.dec_op.forward([z, args['dec_mu'].asnumpy()], [p])
print(p)
y_pred = p.argmax(axis=1)
self.y_pred = y_pred
return y_pred
Объяснение: Я подумал, что мне также нужно передать образец данных, с которыми я тренировался в системе. Вот почему вы видите там и TrainX, и X.
Любая помощь очень ценится.