机器学习(八)——PCA

目录

一、PCA简述

二、PCA步骤

三、PCA的优缺点

四、PCA人脸识别的简单实现

五、总结


一、PCA简述

主成分分析,是一种用于降维的统计技术。它通过将原始数据转换为新的坐标系,使得数据在新坐标系下的方差最大化。这样可以使得数据的维度减少,同时最大程度地保留原始数据的信息。PCA常用于数据探索、特征提取和数据可视化等领域。

二、PCA步骤

1. 数据标准化:首先对原始数据进行标准化处理,即将数据进行零均值化,使得数据的均值为0。

2. 计算协方差矩阵:接下来计算标准化后数据的协方差矩阵,该矩阵描述了数据之间的相关性和

   方差。

3. 特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。

4. 选择主成分:根据特征值的大小,选择最大的k个特征值对应的特征向量作为主成分,其中k是

    要降到的维度。

5. 投影数据:将原始数据投影到所选的主成分上,得到降维后的数据。

三、PCA的优缺点

PCA的优点

能够将原始数据降维,提高了数据的处理效率。通过主成分分析,可以去除数据间的相关性,降低了数据之间的冗余信息。降维后的数据更容易在二维或三维空间中进行可视化展示。可以保留数据的主要特征,有助于发现数据的内在结构。

PCA的缺点

受数据形式限制,PCA对线性相关性较强的数据效果较好,对于非线性关系的数据降维效果可能较差。对异常值比较敏感,可能会对主成分分析的结果产生较大影响。降维后的数据解释性通常比较弱,降低了原始数据的可解释性。对大规模数据进行主成分分析的计算量较大,需要较多计算资源。

四、PCA人脸识别的简单实现

import numpy as np
from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import train_test_split

# 加载人脸数据集
lfw_dataset = fetch_lfw_people(min_faces_per_person=70, resize=0.4, data_home='D://BaiduNetdiskDownload//')

# 获取图片数据和标签
X = lfw_dataset.data
y = lfw_dataset.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 计算平均脸
mean_face = np.mean(X_train, axis=0)

# 中心化
X_train_centered = X_train - mean_face
X_test_centered = X_test - mean_face

# 计算特征值和特征向量
cov_matrix = np.cov(X_train_centered, rowvar=False)
eigenvalues, eigenvectors = np.linalg.eigh(cov_matrix)

# 选择前k个特征向量
k = 100
top_eigenvectors = eigenvectors[:, -k:]

# 投影数据
X_train_pca = X_train_centered.dot(top_eigenvectors)
X_test_pca = X_test_centered.dot(top_eigenvectors)

# 使用KNN进行分类
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train_pca, y_train)

# 预测
y_pred = knn.predict(X_test_pca)

# 计算准确率
accuracy = np.mean(y_pred == y_test)
print("准确率:", accuracy)

#选择前5个测试数据进行预测,并输出预测结果
n_samples = 5  # 选择 5 个样本进行预测
X_selected = X_test_pca[:n_samples, :]  # 选择测试数据的前5个样本
y_true = y_test[:n_samples]  # 对应的真实标签

# 使用模型进行预测
y_pred = knn.predict(X_selected)

# 输出预测结果和真实标签
for i in range(n_samples):
    print("预测标签:", y_pred[i], "真实标签:", y_true[i])

运行结果

五、总结

通过PCA技术,成功地将数据集进行了降维处理,取得了比较好的效果。降维后的数据在可视化和处理效率上都有了显著提高。然而,在降低维度的同时,需要注意对数据解释性的影响,以及对异常值的敏感度。
 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值