目录
10.1k近邻学习
K近邻学习是一种简单的监督学习算法,用于分类和回归任务。其基本步骤如下:
-
训练阶段:存储训练数据及其标签,没有显式的训练过程。
-
预测阶段:
- 对于每个待预测的数据点,计算它与所有训练数据点的距离。
- 选择距离最近的K个邻居。
- 对这些K个邻居的标签进行投票(分类)或计算均值(回归),得到最终的预测结果。
10.2低维嵌入
在高维情形下出现的数据样本稀疏、 距离计算困难等问是所有机器学习方法共同面的严重障碍, 被称为" 维数灾难"。缓解维数灾难的一个重要途径是降维,"多维缩放" ( MDS) 是经典的降维方法 ,下面做个简单的介绍:
步骤如下:
-
计算距离矩阵:计算数据点之间的相似度或距离,通常使用欧氏距离或其他度量方式,得到一个距离矩阵。
-
中心化距离矩阵:通过对距离矩阵进行中心化,得到一个双中心化的矩阵,通常用来消除均值影响。计算方法涉及对距离矩阵进行矩阵变换。
-
特征分解:对中心化的距离矩阵进行特征值分解,得到特征值和特征向量。
-
选择维度:根据需要选择前k个最大的特征值及其对应的特征向量。k是目标低维空间的维度。
-
构建低维坐标:利用选择的特征向量和特征值构建低维坐标,得到数据点在低维空间的表示。
-
可视化与分析:将低维数据可视化,用于进一步分析数据的结构和模式。
下面是关于MDS算法的实验代码及分析结果:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import MDS
from sklearn.datasets import load_iris
from sklearn.metrics import pairwise_distances
# 加载示例数据
data = load_iris()
X = data.data
labels = data.target
# 计算距离矩阵
dist_matrix = pairwise_distances(X)
# 应用 MDS
mds = MDS(n_components=2, dissimilarity='precomputed', random_state=42)
X_mds = mds.fit_transform(dist_matrix)
# 结果可视化
plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_mds[:, 0], X_mds[:, 1], c=labels, cmap='viridis', edgecolor='k', s=50)
plt.colorbar(scatter, label='Class Label')
plt.title('MDS Projection of Iris Dataset')
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.show()
# 输出分析结果
print("Explained stress:", mds.stress_)
-
降维可视化:
散点图展示了通过 MDS 降维得到的结果。不同的颜色表示不同的鸢尾花品种(类别),帮助我们观察降维后的数据结构和类别分布。 -
解释的应力(Stress):
mds.stress_
输出了应力值,这是衡量低维空间距离与原始距离矩阵一致性的指标。较低的应力值表示更好的维度缩放效果。
距离矩阵:通过 pairwise_distances
计算所有数据点对之间的距离。
MDS应用:将距离矩阵作为输入,降维到2维空间。
结果可视化:帮助直观理解数据在低维空间的分布情况。
该代码通过 MDS 将高维数据降维至二维,并可视化了不同类别的数据点,以便分析数据在低维空间中的关系和结构。
实验结果:
10.3主成分分析
主成分分析 (PCA)是最常用的一种降维方法,