sklearn实现pca

导入

from sklearn.decomposition import PCA

n_components希望保留的主成分数量,如果为none,则所有主成分均被保留,为mle时自动选择组价数量
whiten白化,即对数据进行归一化,让期望为0,方差为1。whiten=false即
标准化改转变会损失部分方差信息,但有时候会是的后续的建模效果有所改进
白化就是对降维后的数据的每个特征进行归一化

from sklearn.datasets import load_wine
wine=load_wine()
x,y=wine.data,wine.target

print(x.shape,y.shape)#查看数据形状

(178, 13) (178,)

数据集标准化处理

#数据集标准化处理
from sklearn.preprocessing import StandardScaler
model=StandardScaler()
x_scaled=model.fit_transform(x)
print(x.mean(axis=0),x.std(axis=0))
print(x_scaled.mean(axis=0),x_scaled.std(axis=0))

降维

这里是错误示范:没有标准化

#降维
pca=PCA(n_components=2)#主成分数量为2,方便可视化
x_pca=pca.fit_transform(x)
print(x_pca.shape)
#降维后的特征进行可视化
import matplotlib.pyplot as plt
import seaborn as sns
sns.scatterplot(x_pca[:,0],x_pca[:,1],hue=y)

在这里插入图片描述

#查看主成分系数矩阵
print(pca.components_)#系数越大,对主成分的贡献越多

在这里插入图片描述

plt.matshow(pca.components_)#主成分热力图
plt.colorbar()

在这里插入图片描述

# 查看各个主成分的方差解释量(特征值)
print(pca.explained_variance_)
#主成分的方差解释比率(贡献率)
print(pca.explained_variance_ratio_)

在这里插入图片描述
以下为正确示范

#降维
pca=PCA(n_components=2)#主成分数量为2,方便可视化
x_pca=pca.fit_transform(x_scaled)
print(x_pca.shape)

(178, 2)

#降维后的特征进行可视化
import matplotlib.pyplot as plt
import seaborn as sns
sns.scatterplot(x_pca[:,0],x_pca[:,1],hue=y)

在这里插入图片描述

#查看主成分系数矩阵
print(pca.components_)#系数越大,对主成分的贡献越多

在这里插入图片描述

plt.matshow(pca.components_)#主成分热力图
plt.colorbar()

在这里插入图片描述

# 查看各个主成分的方差解释量(特征值)
print(pca.explained_variance_)
print(pca.explained_variance_ratio_)#主成分的方差解释比率(贡献率)

在这里插入图片描述

#降维
pca=PCA(n_components=13)#主成分数量为2,方便可视化
x_pca=pca.fit_transform(x_scaled)
print(x_pca.shape)

# 查看各个主成分的方差解释量(特征值)
print(pca.explained_variance_)

print(pca.explained_variance_ratio_)#主成分的方差解释比率(贡献率)

在这里插入图片描述

# 利用pca降维(n_componenets设为贡献率,例如0.9)
pca3=PCA(n_components=0.9)#主成分数量为2,方便可视化
x_pca=pca3.fit_transform(x_scaled)
print(x_pca.shape)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值