基于PCA的数据降维(鸢尾花(iris)数据集)

目录

一、数据集

二、PCA降维

1)加载数据集

2)PCA降维过程

3)可视化降维效果

三、运行效果图


一、数据集

        鸢尾花数据集是 Python 中 sklearn 库自带的数据集。数据本身是四维数据集,这里采用数据降维技术将数据降至二维,以便更好地可视化数据特征。

二、PCA降维

1)加载数据集

        首先加载高维数据集(维度为4),并确定降维后空间维度n_components(维度为2)。

from sklearn.datasets import load_iris
data = load_iris()
y = data.target
x = data.data
n_components = 2

2)PCA降维过程

        执行PCA算法进行降维操作,得到降维后的向量reduce_x。

from sklearn.decomposition import PCA
pca = PCA(n_components = n_components)
reduced_x = pca.fit_transform(x)

3)可视化降维效果

        由于数据集已经进行了预定义为三类,为了有效区分不同类型之间特征以及同类别间的联系,将在二维空间进行可视化操作。

import matplotlib.pyplot as plt
red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_y = [],[]

for i in range(len(reduced_x)):
    if y[i] == 0:
        red_x.append(reduced_x[i][0])
        red_y.append(reduced_x[i][1])
        
    elif y[i] == 1:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
        
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])
    
plt.scatter(red_x,red_y,c='r',marker='x',label='Class1')
plt.scatter(blue_x,blue_y,c='b',marker='D',label='Class2')
plt.scatter(green_x,green_y,c='g',marker='.',label='Class3')    

三、运行效果图

        可以清晰地看到三类数据被分割,且 Class1 与 Class2 和 Class3 差别明显。这证明了PCA降维的确提取出了重要特征,并且这种特征可以更好地区分数据,从而避免了数据集的“高维灾难”。

猜你喜欢

转载自blog.csdn.net/weixin_51756038/article/details/130058265