机器学习(8)-降维

降维

降维也是一种无监督学习问题,指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。

降维有助于减少计算复杂度和存储需求,缓解高维数据带来的维度灾难,消除冗余和噪声特征,改善模型性能并减少过拟合。降维还方便了高维数据的可视化,使得数据模式和结构更易于观察和理解。降维可以提高模型的运行效率,是数据预处理和特征工程中的重要步骤。

主成分分析(PCA)

主成分分析(Principal Component Analysis,PCA)是一种基于从高维空间映射到低维空间的映射方法,也是最基础的无监督降维算法,其目标是向数据变化最大的方向投影,或者说向重构误差最小化的方向投影,由 Karl Pearson 在 1901 年提出,属于线性降维方法。与 PCA 相关的原理通常被称为最大方差理论或最小误差理论。这两者目标一致,但过程侧重点则不同。

在降维过程中,如果所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了;而如果映射后方差尽可能的大,那么数据点会分散开来,可以保留更多的信息。

算法步骤

1.数据标准化

对每个特征进行标准化,使其均值为0,方差为1。这是为了确保每个特征在计算协方差矩阵时对结果的贡献相同。

from sklearn.preprocessing import StandardScaler
X_standardized = StandardScaler().fit_transform(X)

2.计算协方差矩阵

计算标准化数据的协方差矩阵,得出各个特征之间的线性关系。

3.计算协方差矩阵的特征值和特征向量

计算协方差矩阵的特征值和特征向量。特征值表示数据在相应特征向量方向上的方差。

4.选择主成分

对特征值进行排序,选择最大的k个特征值对应的特征向量作为主成分。特征向量是新的坐标系轴。

5.构建特征向量矩阵

选择前k个特征向量,构建特征向量矩阵。

6.变换数据

将原始数据投影到选择的特征向量上,得到降维后的数据。

Python实践-主成分分析

鸢尾花(Iris)数据集包含150个样本,每个样本有4个特征,使用PCA将原始4维数据降维到2维,在降维后的二维空间中,每个数据点用一个散点表示,不同类别(Setosa、Versicolor、Virginica)用不同的颜色表示,分别是红色(r)、绿色(g)和蓝色(b)。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
plt.rcParams['font.family'] = ['SimHei'] # 用来正常显示中文标签SimHei
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 加载示例数据集(这里使用鸢尾花数据集)
iris = load_iris()
X = iris.data
y = iris.target

# 初始化PCA,设定要降维的目标维数(这里设为2维)
pca = PCA(n_components=2)

# 使用PCA进行降维
X_pca = pca.fit_transform(X)

# 输出解释方差比例
print("解释方差比例:", pca.explained_variance_ratio_)

# 可视化降维后的数据
plt.figure(figsize=(8, 6))
for target, color, label in zip([0, 1, 2], ['r', 'g', 'b'], iris.target_names):
    plt.scatter(X_pca[y == target, 0], X_pca[y == target, 1], color=color, label=label)
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.title('PCA 降维后的鸢尾花数据集')
plt.legend()
plt.show()

参考

机器学习四大降维方法_机器学习算法 降维-CSDN博客

机器学习--主成分分析(PCA)算法的原理及优缺点 - 泰初 - 博客园 (cnblogs.com)

机器学习笔记(九)——数据降维:主成分分析法(PCA)_主成分分析法数据样本-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值