Bitte erstelle 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 Dimensionreduktion durchführen. Hierzu laden wir zuerst die Klasse und erzeugen eine Instanz davon. Wir geben an, dass wir danach nur zwei Dimensionen (“components”) erhalten möchten. Dadurch lassen sie die Daten später auf in einem Plot mit zwei Achsen abbilden.
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 stellen wir Ergebnis graphisch dar:
fig, ax = plt.subplots()
plt.scatter(tsne_result[:, 0], tsne_result[:, 1], c=digits.target, cmap="Set1")
plt.colorbar()
Vergleich die Ergebnisse beider Methode. Velches Verfahren zeigt eine höhere Trennschärfe?