Кластеризация модели активного обучения в UMap

В настоящее время я работаю с UMAP и modAL для создания записной книжки. Используя данные MNIST (sklearn.datasets.load_digits), Я начинаю подгонять UMAP к моему Train-data. Затем я перехожу к преобразованию всех данных, которые у меня есть (тренировка, тест, начальная оценка, пул).

Разделить данные на обучение и тестирование

       X_train, X_test, y_train, y_test, image_train, image_test = train_test_split(X, y, images, test_size=0.9)

Выберите 100 случайных экземпляров для семени активного обучения

       initial_idx = np.random.choice(range(len(X_train)), size=n_initial, replace=False)

X_initial, y_initial, image_initial = X_train[initial_idx], y_train[initial_idx], image_train[initial_idx]
X_pool=np.delete(X_train, initial_idx, axis=0)
y_pool=np.delete(y_train, initial_idx, axis=0)
image_pool = np.delete(image_train, initial_idx, axis=0)

Установите UMAP на данные поезда и преобразуйте другие наборы

       em_train = umap.UMAP(n_neighbors=5).fit(X_train)

em_test = em_train.transform(X_test)
em_initial = em_train.transform(X_initial)
em_pool = em_train.transform(X_pool)

Инициализировать активного учащегося

       learner = ActiveLearner(
    estimator=RandomForestClassifier(),
    query_strategy=uncertainty_sampling,
    X_training=em_initial, y_training=y_initial
)

Затем (следуя этому модальному примеру и примеру UMAP) я перехожу к активному циклу обучения. Я также добавил график UMAP в AL-Loop, и здесь я столкнулся с несколькими проблемами:

  1. Имеет ли смысл подбирать UMAP на основе данных о моем поезде? Должен ли я переустанавливать его после каждой итерации активного обучения? Если я это сделаю, кластер начнет выглядеть иначе, чем раньше. Но в противном случае мои точки данных в кластере едва перемещаются (маркировка новых точек данных не меняет кластер, или я этого не замечаю, потому что я работаю только с 200 точками данных).
  2. Можно ли выбрать на графике UMAP, какой экземпляр запрашивать? Мое вдохновение для этого - активный ученик fastforwardlabs. Сейчас я указываю только стрелкой, какой экземпляр находится рядом с запросом (на основе query_strategy=uncertainty_sampling.

как это выглядит сейчас

При необходимости я могу предоставить больше кода.

0 ответов

Другие вопросы по тегам