利用主成分分析将fisheriris数据集降到二维空间并绘制图像
主成分分析(Principal Component Analysis,PCA)是一种常用的降维技术,它可以将高维数据转化为低维空间,同时保留数据的主要特征。在本文中,我们将使用Python编程语言和fisheriris数据集来演示如何使用主成分分析将数据降到二维空间,并绘制相应的图像。
什么是主成分分析?
主成分分析是一种无监督学习算法,它通过计算数据的协方差矩阵,找到数据中的主要方向,将数据映射到新的坐标系中。在新的坐标系中,第一主成分是数据中方差最大的方向,第二主成分是与第一主成分正交且方差次大的方向,以此类推。通过选择保留的主成分数量,我们可以将数据降维到所需的维度。
准备工作
首先,我们需要导入必要的库和数据集。在这个例子中,我们将使用pandas
库来读取和处理数据,matplotlib
库来可视化数据,sklearn
库中的PCA
类来进行主成分分析。
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 导入fisheriris数据集
iris = load_iris()
数据探索
在进行主成分分析之前,我们可以先对数据进行一些基本的探索。fisheriris数据集包含150个样本,每个样本有4个特征:sepal length(花萼长度)、sepal width(花萼宽度)、petal length(花瓣长度)和petal width(花瓣宽度)。数据集中的样本被分为了3个类别:setosa、versicolor和virginica。
我们可以使用pandas
库将数据集转化为DataFrame,并查看前几行数据:
# 将数据集转化为DataFrame
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
# 查看前几行数据
print(df.head())
输出结果:
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target | |
---|---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | ||
1 | 4.9 | 3.0 | 1.4 | 0.2 | |
2 | 4.7 | 3.2 | 1.3 | 0.2 | |
3 | 4.6 | 3.1 | 1.5 | 0.2 | |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
数据预处理
在进行主成分分析之前,我们需要对数据进行预处理。由于fisheriris数据集的特征具有不同的量纲,我们需要对其进行标准化,以确保每个特征对主成分分析的结果具有相同的重要性。
# 标准化数据
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df.iloc[:, :-1])
进行主成分分析
现在我们可以进行主成分分析了。我们可以通过设置主成分数量来控制降维后的维度。在这个例子中,我们将设置主成分数量为2。
# 进行主成分分析
pca = PCA(n_components=2)
pca_result = pca.fit_transform(df_scaled)
可视化结果
最后,我们可以将降维后的数据可视化。在这个例子中,我们将使用散点图将降维后的数据表示出来,并使用不同的颜色表示不同的类