【机器学习】PCA降维

iris

【机器学习的数学原理和算法实践 5.6】

import numpy as np
import matplotlib.pyplot as plt
# sklearn.decomposition.PCA 主要用于非线性数据的降维的KernelPCA
# 【参考:[sklearn.decomposition.PCA-scikit-learn中文社区](https://scikit-learn.org.cn/view/610.html)】
from sklearn import datasets, decomposition
def load_data():
    iris = datasets.load_iris()
    return iris.data, iris.target


def test_PCA(*data):
    x, y = data
    pca = decomposition.PCA(n_components=None)
    pca.fit(x)  # 拟合模型
    print('可解释的方差占比:%s' % str(pca.explained_variance_ratio_))  # 所选择的每个组成部分所解释的方差百分比。
x, y = load_data()
print(x[0:5])
test_PCA(x, y) # 可见有四个维度 前两个维度特征比较显著,可以考虑从4维降到2维

在这里插入图片描述

def plot_data(*data):
    x, y = data
    flg = plt.figure()  # 新建画布
    ax = flg.add_subplot(1, 1, 1)  # 添加子图
    colors = ((1, 0, 0), (0, 1, 0), (0, 0, 1),
             (0.5, 0.5, 0.5), (0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0),
             (0, 0.7, 0.3), (0.4, 0.4, 0.2))
    # 去除数组中的重复数字,并进行排序之后返回 array([0,1,2])
    for label,color in zip(np.unique(y),colors):
        position= y==label # array([True,True,...])
        ax.scatter(x[position,0],x[position,1],label='target=%d'%label,color=color)
    ax.set_xlabel('x[0]')
    ax.set_ylabel('y[0]')
    ax.legend(loc='best')
    plt.rcParams['font.sans-serif']=['SimHei']
    ax.set_title('样本原始分布图')
    plt.show()

plot_data(x,y)

在这里插入图片描述

def plot_PCA(*data):
    x, y = data
    pca = decomposition.PCA(n_components=2)  # PCA降维后的特征维度数目 2
    x_r=pca.fit_transform(x)  # 用X拟合模型,对X进行降维
    flg = plt.figure()  # 新建画布
    ax = flg.add_subplot(1, 1, 1)  # 添加子图
    colors = ((1, 0, 0), (0, 1, 0), (0, 0, 1),
             (0.5, 0.5, 0.5), (0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0),
             (0, 0.7, 0.3), (0.4, 0.4, 0.2))
    for label,color in zip(np.unique(y),colors):
        position=y==label
        ax.scatter(x_r[position,0],x_r[position,1],label='target=%d'%label,color=color)
    ax.set_xlabel('x[0]')
    ax.set_ylabel('y[0]')
    ax.legend(loc='best')
    plt.rcParams['font.sans-serif']=['SimHei']
    ax.set_title('PCA降维后样本分布图')
    plt.show()

plot_PCA(x,y) # PCA降维后样本分布图 可以看到降维后样本分布效果比较符合预期

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCA降维和深度学习降维是两种不同的降维方法。 PCA降维是一种经典的线性降维方法,它通过找到数据中方差最大的方向,将数据投影到这个方向上,从而实现降维PCA的目标是选择K个单位正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差尽可能大。PCA可以用于数据预处理,去除噪音和冗余信息,提高其他机器学习算法的性能。\[1\]\[2\]\[3\] 深度学习降维是一种基于神经网络的非线性降维方法。它通过训练一个深度神经网络,将高维数据映射到低维空间中。深度学习降维可以学习到数据的非线性结构和特征表示,能够更好地保留数据的信息。与PCA相比,深度学习降维可以处理更复杂的数据,但计算复杂度也更高。深度学习降维在图像处理、自然语言处理等领域有广泛应用。 #### 引用[.reference_title] - *1* [PCA降维](https://blog.csdn.net/sikh_0529/article/details/126806794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [深度学习不深度-PCA与AutoEncoder](https://blog.csdn.net/jainszhang/article/details/82728274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值