維度降低是機器學習和數據分析中的至關重要技術。 它將高維數據轉換為較低維的表示,並保留基本信息。 具有許多功能的高維數據集對機器學習模型構成了挑戰。本教程探討了使用降低尺寸降低,各種技術及其在圖像數據的應用的原因。 我們將可視化結果並比較較低維空間中的圖像。
為了全面了解機器學習,請考慮“成為Python的機器學習科學家”職業曲目。
為什麼減少尺寸?
降低降低技術被歸類為線性或非線性:
主體組件分析(PCA):識別方向(主要組件)最大化數據方差。
t-sne(t分佈的隨機鄰居嵌入):在保留局部關係的同時,在較低維度(2D或3D)中可視化高維數據。 有關詳細信息,請參見我們的T-SNE指南。
>特徵選擇:在不轉換數據的情況下選擇最相關的功能。方法包括過濾器,包裝器和嵌入式方法。
>> 特徵提取:>通過創建原始圖的組合來將數據轉換為較低維空間。 當原始功能相關或冗餘時,這很有用。 PCA,LDA和非線性方法屬於此類別。
> 圖像數據>讓我們使用Python將維度降低到圖像數據集:
1。數據集加載:
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)
這將加載數字數據集(手寫數字0-9,每個8x8像素,平坦至64個功能)。
2。可視化圖像:
def plot_digits(images, labels, n_rows=2, n_cols=5): # ... (plotting code as before) ...
此功能顯示示例圖像。
3。應用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)
這可以縮放數據,選擇一個子集以提高效率,並應用T-SNE以降低2個維度。
4。可視化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()
5。比較圖像:
import random idx1, idx2 = random.sample(range(X_tsne.shape[0]), 2) # ... (distance calculation and image plotting code as before) ...
結論
公共尺寸縮小技術:
以上是了解降低維度的詳細內容。更多資訊請關注PHP中文網其他相關文章!