Pengurangan dimensi adalah teknik penting dalam pembelajaran mesin dan analisis data. Ia mengubah data dimensi tinggi ke dalam perwakilan dimensi yang lebih rendah, memelihara maklumat penting. Dataset dimensi tinggi, dengan pelbagai ciri, menimbulkan cabaran untuk model pembelajaran mesin. Tutorial ini meneroka sebab -sebab menggunakan pengurangan dimensi, pelbagai teknik, dan aplikasi mereka untuk data imej. Kami akan memvisualisasikan hasilnya dan membandingkan imej di ruang dimensi yang lebih rendah.
untuk pemahaman yang komprehensif tentang pembelajaran mesin, pertimbangkan "menjadi saintis pembelajaran mesin dalam python" trek kerjaya.
Data dimensi tinggi, sementara maklumat yang kaya, sering termasuk ciri-ciri berlebihan atau tidak relevan. Ini membawa kepada masalah seperti:
pengurangan dimensi memudahkan data semasa mengekalkan ciri -ciri utama, meningkatkan prestasi model dan tafsiran.
Teknik pengurangan dimensi dikategorikan sebagai linear atau tidak linear:
Kaedah linear: Mengandaikan data ini terletak di dalam subspace linear. Mereka komputasi yang cekap dan sesuai untuk data berstruktur secara linear. Contohnya termasuk:
Kaedah nonlinear: Digunakan apabila data tinggal di manifold tak linear. Mereka menangkap struktur data yang kompleks dengan lebih baik. Contohnya termasuk:
pengurangan dimensi secara meluas diklasifikasikan ke dalam:
Pemilihan Ciri: Pilih ciri -ciri yang paling relevan tanpa mengubah data. Kaedah termasuk penapis, pembalut, dan kaedah tertanam.
Pengekstrakan ciri: Mengubah data menjadi ruang dimensi yang lebih rendah dengan membuat ciri-ciri baru dari kombinasi yang asal. Ini berguna apabila ciri -ciri asal berkorelasi atau berlebihan. Kaedah PCA, LDA, dan bukan linear berada di bawah kategori ini.
mari kita gunakan pengurangan dimensi ke dataset imej menggunakan python:
1. Memuatkan Dataset:
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)
Ini memuatkan dataset digit (digit tulisan tangan 0-9, masing-masing 8x8 piksel, diratakan hingga 64 ciri).
2. Menggambarkan Imej:
def plot_digits(images, labels, n_rows=2, n_cols=5): # ... (plotting code as before) ...
Fungsi ini memaparkan gambar sampel.
3. Memohon T-SNE:
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)
ini skala data, memilih subset untuk kecekapan, dan menggunakan T-SNE untuk mengurangkan hingga 2 dimensi.
4. Menggambarkan output T-SNE:
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()
Ini menggambarkan perwakilan 2D T-SNE, dikodkan warna oleh label digit.
5. Membandingkan Imej:
import random idx1, idx2 = random.sample(range(X_tsne.shape[0]), 2) # ... (distance calculation and image plotting code as before) ...
Ini secara rawak memilih dua mata, mengira jarak mereka dalam ruang t-SNE, dan memaparkan imej yang sepadan.
pengurangan dimensi meningkatkan kecekapan model pembelajaran mesin, ketepatan, dan tafsiran, meningkatkan visualisasi dan analisis data. Tutorial ini meliputi konsep pengurangan dimensi, kaedah, dan aplikasi, menunjukkan penggunaan T-SNE pada data imej. Kursus "pengurangan dimensi dalam python" menyediakan pembelajaran lebih mendalam.
Atas ialah kandungan terperinci Memahami pengurangan dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!