机器学习-pca

什么是pca

主成分分析(PCA)是一种统计工具,用于通过减少数据集的维数来简化数据集,同时尽可能保留原始数据的信息。这种方法通过线性变换把原始数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(即主成分)上。

基本概念

线性变换:PCA是一种线性技术,它通过找到原始特征的线性组合来捕获数据中的最大方差。
无监督学习:与许多其他机器学习技术不同,PCA是一种无监督学习技术,这意味着它不依赖于标记数据(例如分类标签)。它只需要输入数据矩阵,不需要关于类标签或目标值的额外信息。
降维:PCA的主要目的是降低数据的维度,这可以使数据更易于可视化和解释,并可能提高某些机器学习算法的性能。
数据去相关:PCA也可以用于去除数据中的相关性(去相关),这有助于缓解某些机器学习算法中的多重共线性问题。

工作原理

标准化数据:为了使PCA不受量纲的影响,我们首先将所有的特征标准化,使其具有单位方差和零均值。
计算协方差矩阵:协方差矩阵可以捕捉到数据特征之间的相关性。
计算协方差矩阵的特征值和特征向量:特征值表示的是该方向的方差大小,而特征向量则定义了新的特征空间的方向。
选择主成分:按照特征值的大小进行排序,并选择前k个最大的特征值对应的特征向量。这些特征向量就是我们要找的主成分。
数据降维:通过将数据投影到选定的主成分上,我们就能降低数据的维度。

实现

from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# 加载Iris数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target

# 标准化数据
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 创建PCA对象
pca = PCA(n_components=2)  # 我们将数据降到2维

# 拟合数据
X_pca = pca.fit_transform(X_scaled)

# 可视化结果
plt.figure(figsize=(8, 6))
colors = ['navy', 'turquoise', 'coral']
for i, c in zip(range(3), colors):
    plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], color=c, label=iris.target_names[i])
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('PCA of IRIS dataset')
plt.xlabel('First principal component')
plt.ylabel('Second principal component')
plt.show()

注意,这个例子中只使用了Iris数据集的前100个样本点来进行可视化,以避免过拟合。可以通过更改n_components参数来调整降到的维度,或者通过更改fit方法中的n_samples参数来使用不同的样本
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值