主成分分析PCA

主成分分析(PCA降维)

算法原理

主成分分析是一种统计方法,通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
主成分分析(PCA)又称为Karhunen-Loeve或K-L方法,用于搜索k个能代表数据的n维正交向量,是最常用的一种降维方法。PCA的主要目的是找出数据中最主要的方面代替原始数据。
具体地,假如数据集是n维的,共有m个数据,希望将m个数据从n维降到n’维,使这m个n’维的数据集尽可能代表原始数据集。

PCA算法

输入:n维样本集D = (x(1),x(2),...,x(m)),要降维到的维数n'
输出:降维后的样本集D'

方法:

1.对所有的样本进行中心化:
中心化
2. 计算样本的协方差矩阵;
3. 对协方差矩阵进行特征值分解;
4.取出最大的n’个特征值对应的特征向量,将所有的特征向量标准化后,组成特征向量矩阵;
5.将样本集中的每一个样本转化为新的样本;
6.得到输出样本集。

鸢尾花数据降维

1.导入所需库及数据集

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

2.加载数据

iris = load_iris()
y = iris.target
x = iris.data
# x.shape

3.PCA降维

pca = PCA(n_components=2)
pca = pca.fit(x)
reduced_X = pca.transform(x)
reduced_X.shape

4.可视化

red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []
 
for i in range(len(reduced_X)):
    if y[i] == 0:
        red_x.append(reduced_X[i][0])
        red_y.append(reduced_X[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_X[i][0])
        blue_y.append(reduced_X[i][1])
    else:
        green_x.append(reduced_X[i][0])
        green_y.append(reduced_X[i][1])
#按照鸢尾花的类别将降维后的数据点保存在不同的列表中
 
plt.scatter(red_x, red_y, c='r', marker='x')
plt.scatter(blue_x, blue_y, c='b', marker='D')
plt.scatter(green_x, green_y, c='g', marker='o')
plt.show()
  运行结果如下:

降维后的样本分布图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值