维度降低是机器学习和数据分析中的至关重要技术。 它将高维数据转换为较低维的表示,并保留基本信息。 具有许多功能的高维数据集对机器学习模型构成了挑战。本教程探讨了使用降低尺寸降低,各种技术及其在图像数据的应用的原因。 我们将可视化结果并比较较低维空间中的图像。
为了全面了解机器学习,请考虑“成为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()这可视化2D T-SNE表示,由数字标签颜色编码。
5。比较图像:
import random idx1, idx2 = random.sample(range(X_tsne.shape[0]), 2) # ... (distance calculation and image plotting code as before) ...这随机选择两个点,计算其在T-SNE空间中的距离,并显示相应的图像。
结论
公共尺寸缩小技术:
以上是了解降低维度的详细内容。更多信息请关注PHP中文网其他相关文章!