$$ L = \sum_{i,j} p_{ij} \log \frac{p_{ij}}{q_{ij}} $$
U radu ćemo koristiti Viskonsis skup podataka za klasifikaciju tumora na benigne i maligne. Dakle, imamo dve različite klase.
# !pip install umap-learn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import umap.umap_ as umap
from sklearn import datasets
from sklearn.manifold import TSNE
import warnings
warnings.filterwarnings('ignore')
podaci = datasets.load_breast_cancer()
y = podaci.target
X = podaci.data
X.shape # originalni prostor je dimenzije 30
(569, 30)
tsne = TSNE(n_components=2, perplexity=50) # novi prostor je dimenzije 2
# perplexity je parametar sa kojim je moguce eksperimentisati,
# razlicite vrednosti ce davati razlicite rezultate
X_tsne = tsne.fit_transform(X)
plt.scatter(X_tsne[:,0][y==0], X_tsne[:,1][y==0], s=5, c='r')
plt.scatter(X_tsne[:,0][y==1], X_tsne[:,1][y==1], s=5, c='y')
plt.show()
Možemo primetiti da su klase sasvim dobro razdvojene.
umap = umap.UMAP(n_components=2) # sad pomoću UMAP-a preslikavamo matricu atributa
# u dvodimenzioni prostor
X_umap = umap.fit_transform(X)
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
plt.scatter(X_umap[:,0][y==0], X_umap[:,1][y==0], s=5, c='r')
plt.scatter(X_umap[:,0][y==1], X_umap[:,1][y==1], s=5, c='y')
plt.show()