(二)sklearn降维——PCA和LDA

线性判别分析(LDA)尝试识别占类之间差异最大的属性。特别地,与PCA相比,LDA是使用已知类标签的监督方法。

import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names
X.shape,y.shape,target_names
((150, 4), (150,), array(['setosa', 'versicolor', 'virginica'], dtype='<U10'))

Iris数据集代表3种鸢尾花(Setosa,Versicolour和Virginica),具有4种属性:萼片长度,萼片宽度,花瓣长度和花瓣宽度。

PCA把4种属性降维2种

pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)
X_r.shape
(150, 2)

LDA把4种属性降维2种,LDA是使用已知类标签的监督方法

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)
X_r2.shape
(150, 2)
# Percentage of variance explained for each components
#explained_variance_ 指每个选定的组件所解释的差异量,
#等于n_components的协方差矩阵的最大特征值(保留特征值最大的组分)
#PCA解释方差比,如果没有设置n_components,则会存储所有组件,解释方差之和为1.0。
print('explained variance ratio (first two components): %s'
      % str(pca.explained_variance_ratio_))
explained variance ratio (first two components): [0.92461621 0.05301557]
#绘图X_r[y == i, 0]代表第0个组分作为x轴,y == i代表标签为y的数据。
#一共3个类别,所有有3次不同颜色的绘图
plt.figure()
colors = ['navy', 'turquoise', 'darkorange']
lw = 2

for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=.8, lw=lw,
                label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('PCA of IRIS dataset')
Text(0.5,1,'PCA of IRIS dataset')
plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], alpha=.8, color=color,
                label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('LDA of IRIS dataset')

plt.show()

这里写图片描述

这里写图片描述

分析:两种成分基本可以把3个类别区分,甚至一种成分(x轴的数据就可以,因为0.92461621代表大量的信息)

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sklearn中,PCA维算法被包括在模块decomposition中。PCA的API文档为sklearn.decomposition.PCA,它提供了一些参数用于定制化维过程,比如n_components用于指定维后的维度数量,copy用于指定是否复制原始数据,whiten用于指定是否对数据进行白化处理等等。\[1\] 在实际应用中,我们可以使用sklearnPCA模块来进行维操作。维的结果不一定都是好的,因此在解决实际问题时,我们需要同时计算维前后的结果,并进行比较。维后的数据是不可解释的,但不影响最终的计算结果。\[2\] sklearn中的维算法都被包括在decomposition模块中,这个模块本质上是一个矩阵分解模块。矩阵分解在过去的十年中取得了很大的进展,它可以应用于维、深度学习、聚类分析、数据预处理、低维度特征学习、推荐系统、大数据分析等领域。因此,sklearnPCA模块是一个非常强大和多功能的维工具。\[3\] #### 引用[.reference_title] - *1* *2* [Sklearn - PCA数据维](https://blog.csdn.net/taon1607/article/details/106842006)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用Sklearn学习维算法PCA和SVD](https://blog.csdn.net/qq_38163244/article/details/109237230)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值