这个数据集由3种不同类型的鸢尾花(Setosa、Versicolour和Virginica)组成,存储在一个150×4的numpy.ndarray中。不同类型的分类依据花瓣和萼片长度宽度。
鸢尾花数据集中 每一行代表样本,每一列代表 萼片长度、萼片宽度、花瓣长度和花瓣宽度。
#导入各种包,其中,导入了matplotlib中的一个子模块mpl_toolkits.mplot3d,用于绘制三维图形。
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
from sklearn import datasets
from sklearn.decomposition import PCA
#将鸢尾花数据集中的前两个特征(sepal length和sepal width)存储到X中,并将标签(iris species)存储到y中。
iris = datasets.load_iris()
X = iris.data[:, :2] # 为了展示二维图,我们只选择前两个特征
y = iris.target
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
plt.figure(2, figsize=(8, 6))
plt.clf()
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, edgecolor="k")
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.xticks(())
plt.yticks(())
# 接下来,为了更好地理解维度的相互作用,我们将鸢尾花数据集(iris)可视化为一个三维散点图
#这两行代码创建了一个名为fig大小为 8x6 的新图形,并在其中创建一个3D坐标轴对象ax。
fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d", elev=-150, azim=110)
#这一行代码使用PCA算法将iris数据集降维到3维,并将结果存储在X_reduced变量中
X_reduced = PCA(n_components=3).fit_transform(iris.data)
#这一行代码在3D坐标轴上绘制了降维后的数据点,并用标签y对其进行着色。
#用不同颜色的散点图表示不同类别的鸢尾花数据,其中 x、y、z 轴分别对应降维后的前三个特征,
#颜色通过 c=y 参数来指定,s=40 表示散点的大小为 40,edgecolor="k" 表示散点的边缘颜色为黑色。
# plt.cm.Set1 是一个包含多种颜色的颜色映射。在这个颜色映射中,每个类别的数据点都用不同的颜色进行表示。
ax.scatter(
X_reduced[:, 0],
X_reduced[:, 1],
X_reduced[:, 2],
c=y,
cmap=plt.cm.Set1,
edgecolor="k",
s=40,
)
#这几行代码对3D坐标轴进行了设置,包括设置标题、坐标轴标签和刻度。
ax.set_title("First three PCA directions")
ax.set_xlabel("1st eigenvector")
ax.xaxis.set_ticklabels([])
ax.set_ylabel("2nd eigenvector")
ax.yaxis.set_ticklabels([])
ax.set_zlabel("3rd eigenvector")
ax.zaxis.set_ticklabels([])
plt.show()
<< · Back Index ·>>
四大“醒”,包括 wake,waken,awake 和 awaken,它們意思相近,有的時候甚至感覺它們是一樣的,那怎麼區分它們呢?一、wake1....