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