PCA降维_鸢尾花案例python代码实现

使用鸢尾花数据对鸢尾花的特征进行降维,由原来的4个特征降到2个特征。使用的数据比较简单,主要是为了实现PCA降维的过程。

  • PCA是矩阵分解算法的核心算法。
  • PCA它使用的信息量的衡量指标是样本的方差,又称可解释性方差。 方差越大,特征所带的信息量就越多。降维后特征的信息量是从多到少进行分布的。
  • 代码中的查看信息量的大小即为降维后的每个特征值的方差的大小。
  • 可解释性方差贡献率是该特征所占原来特征的贡献率,可解释性方差贡献率的和即为此次降维后保留的特征的概率。
  • 代码中的n_components=2,代表降维到2个特征值,也可取‘mle’让程序使用最大似然估计自己找寻最合适的降维超参数。但是如果特征数超过样本数此参数不可用。
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import pandas as pd
import numpy as np

iris = load_iris()
X = iris.data
y = iris.target
print(pd.DataFrame(X))

# 调用PCA
pca = PCA(n_components=2)  # 实例化 此处使用2代表降维到2个特征值,也可取mle让程序使用最大似然估计自己找寻最合适的降维超参数
pca = pca.fit(X)  # 拟合模型
X_dr = pca.transform(X)  # 获取新矩阵
# X_dr = PCA(2).fit_transform(X)  # 同上两步
print(X_dr.shape)

plt.figure()
colors = ['red', 'black', 'orange']
for i in range(0, 3):
    # 画点图
    plt.scatter(X_dr[y==i, 0], X_dr[y==i, 1]
                , alpha=.7 # 透明度设置
                , c=colors[i], label=iris.target_names[i])
plt.legend()
plt.title('PCA of IRIS dataset')
plt.show()

# 查看降维后每个新特征向量上所带的信息量大小,即方差大小
print(pca.explained_variance_)

# 查看降维后每个新特征向量所占的信息量占原始数据总信息量的百分比
# 又叫可解释性方差贡献率
print(pca.explained_variance_ratio_)

print(pca.explained_variance_ratio_.sum())

# 累计可解释方差贡献率曲线来选择最好的n_components
pca_line = PCA().fit(X)
plt.plot([1, 2, 3, 4], np.cumsum(pca_line.explained_variance_ratio_))
plt.xticks([1, 2, 3, 4])  # 限制坐标轴显示为整数
plt.xlabel("number of components after dimension reduction")
plt.ylabel("cumulative explained variance")
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值