Heim >Technologie-Peripheriegeräte >KI >Verständnis der Dimensionalität
Die Verringerung der Dimensionalität ist eine entscheidende Technik für maschinelles Lernen und Datenanalyse. Es verwandelt hochdimensionale Daten in eine niedrigerdimensionale Darstellung und bewahrt wesentliche Informationen. Hochdimensionale Datensätze mit zahlreichen Funktionen stellen sich Herausforderungen für maschinelles Lernen. In diesem Tutorial werden die Gründe für die Verwendung von Dimensionalität, verschiedene Techniken und ihre Anwendung auf Bilddaten untersucht. Wir werden die Ergebnisse visualisieren und Bilder im unteren Dimensionalen Raum vergleichen.
Für ein umfassendes Verständnis des maschinellen Lernens betrachten Sie den Karriere -Track "Werden Sie ein Wissenschaftler für maschinelles Lernen in Python".
Warum Dimensionen reduzieren?
lineare vs. nichtlineare Methoden
Lineare Methoden: Diese Daten gehen davon aus, dass Daten in einem linearen Unterraum liegen. Sie sind rechnerisch effizient und für linear strukturierte Daten geeignet. Beispiele sind:
Nichtlineare Methoden: verwendet, wenn Daten auf einem nichtlinearen Verteiler liegen. Sie erfassen komplexe Datenstrukturen besser. Beispiele sind:
eingeteilt
Feature -Auswahl: Wählt die relevantesten Funktionen aus, ohne die Daten zu transformieren. Zu den Methoden gehören Filter, Wrapper und eingebettete Methoden.
Feature-Extraktion: verwandelt Daten in einen niedrigeren Raum, indem neue Funktionen aus Kombinationen von Originalkombinationen erstellt werden. Dies ist nützlich, wenn Originalfunktionen korreliert oder überflüssig sind. PCA-, LDA- und nichtlineare Methoden fallen in diese Kategorie.
Anwenden wir mit Python:
die Reduzierung der Dimensionalität auf einen Bilddatensatz an.1. Datensatzladen:
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_digits from sklearn.manifold import TSNE from sklearn.preprocessing import StandardScaler digits = load_digits() X = digits.data # (1797, 64) y = digits.target # (1797,) print("Data shape:", X.shape) print("Labels shape:", y.shape)
Dies lädt den Ziffern-Datensatz (handgeschriebene Ziffern 0-9, jeweils 8x8 Pixel, abgeflacht auf 64 Funktionen).
2. Visualisierung von Bildern:
def plot_digits(images, labels, n_rows=2, n_cols=5): # ... (plotting code as before) ...
Diese Funktion zeigt Beispielbilder an.
3. T-SNE anwenden:
scaler = StandardScaler() X_scaled = scaler.fit_transform(X) n_samples = 500 X_sub = X_scaled[:n_samples] y_sub = y[:n_samples] tsne = TSNE(n_components=2, perplexity=30, n_iter=1000, random_state=42) X_tsne = tsne.fit_transform(X_sub) print("t-SNE result shape:", X_tsne.shape)
Dies skaliert die Daten, wählt eine Teilmenge für die Effizienz aus und wendet T-Sne auf 2 Abmessungen an.
4. Visualisieren von T-SNE-Ausgabe:
plt.figure(figsize=(8, 6)) scatter = plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y_sub, cmap='jet', alpha=0.7) plt.colorbar(scatter, label='Digit Label') plt.title('t-SNE (2D) of Digits Dataset (500-sample)') plt.show()
Dies visualisiert die 2D-T-SNE-Darstellung, die durch Ziffernetikett farbcodiert ist.
5. Vergleich von Bildern:
import random idx1, idx2 = random.sample(range(X_tsne.shape[0]), 2) # ... (distance calculation and image plotting code as before) ...
Dies wählt zufällig zwei Punkte aus, berechnet ihren Abstand im T-SNE-Raum und zeigt die entsprechenden Bilder an.
faqs
Das obige ist der detaillierte Inhalt vonVerständnis der Dimensionalität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!