目录
一、数据集
鸢尾花数据集是 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降维的确提取出了重要特征,并且这种特征可以更好地区分数据,从而避免了数据集的“高维灾难”。