Я использую CNN с автоэнкодером для кластеризации различных типов РНК. Кластеры рассчитываются из сжатых представлений различных РНК. Каждая РНК имеет метку, соответствующую типу РНК. В моем случае 7 разных классов. После того, как я получу результат кластеризации, я хотел бы визуализировать результаты и посмотреть, какие кластеры РНК, где, но прямо сейчас, значение y_pred соответствует не классу РНК, а кластеру, который был инициализирован kmeans.
kmeans = KMeans(n_clusters=self.n_clusters, n_init=20)
self.y_pred = kmeans.fit_predict(self.encoder.predict(x))
y_pred_last = np.copy(self.y_pred)
self.model.get_layer(name='clustering').set_weights([kmeans.cluster_centers_])
print(kmeans.labels_)
self.y_pred = q.argmax(1)
if y is not None:
acc = np.round(metrics.acc(y, self.y_pred), 5)
nmi = np.round(metrics.nmi(y, self.y_pred), 5)
ari = np.round(metrics.ari(y, self.y_pred), 5)
loss = np.round(loss, 5)
logdict = dict(iter=ite, acc=acc, nmi=nmi, ari=ari, L=loss[0], Lc=loss[1], Lr=loss[2])
optimizer = 'adam'
dcec.compile(loss=['kld', 'mse'], loss_weights=[args.gamma, 1], optimizer=optimizer)
dcec.fit(x, y=y, tol=args.tol, maxiter=args.maxiter,
update_interval=args.update_interval,
save_dir=args.save_dir,
cae_weights=args.cae_weights)
y_pred = dcec.y_pred
result = list(itertools.chain(y))
with open('datapoints.csv', mode='w', newline='') as data_points:
data_writer = csv.writer(data_points)
data_writer.writerow(['id', 'ytrue', 'ypred'])
truth= y
prediction = dcec.y_pred
for i in range(len(result)):
data_writer.writerow([i, truth[i], prediction[i]])
Моя проблема сейчас заключается в следующем: предсказание = dcec.y_pred В выводе отображается правильная истинная метка, но не «правильная» предсказанная метка. Возвращает значение, но это не соответствует типам РНК
. Не знаю, правильный ли это путь. В основном я просто хочу визуализировать кластеры и посмотреть, какой тип РНК был правильно и ошибочно классифицирован.