Dimensionsreduktion

Bitte erstellen Sie ein neues Jupyter-Notebook und nennen es Dimensionsreduktion.

Wir laden das Datenset:

from sklearn.datasets import load_digits
digits = load_digits()

Wir wollen mit einer Pricinple Component Analysis (PCA) die Reduktion durchführen, laden dafür die Klasse und erzeugen eine Instanz davon. Wir geben an dass wir danach nur zwei Dimensionen (“components”) erhalten würden.

from sklearn.decomposition import PCA
pca = PCA(random_state=1, n_components=2)

Wir können die Tranformation mit der Funktion fit_transform durchführen.

pca_result = pca.fit_transform(digits.data)

Wir erhalten eine Matrix mit der gleichen Anzahl an Datenpunkte aber nur zwei Spalten.

pca_result.shape

Wir können nun die beiden Spalten der resultierenden Matrix plotten.

import matplotlib.pyplot as plt
%matplotlib inline
fig, ax = plt.subplots()
plt.scatter(pca_result[:, 0], pca_result[:, 1], c=digits.target, cmap="Set1")
plt.colorbar()

Wir können das gleich Vorgehen mit dem t-SNE-Verfahren durchführen


from sklearn.manifold import TSNE
tsne = TSNE(random_state=1, n_components=2)
tsne_result = tsne.fit_transform(digits.data)

Und auch hier das Ergebnis plotte.

fig, ax = plt.subplots()
plt.scatter(tsne_result[:, 0], tsne_result[:, 1], c=digits.target, cmap="Set1")
plt.colorbar()

Welches Verfahren zeigt eine höhere Trennschärfe?