导入
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)