使用PCA和生成模型生成鸢尾花数据集并可视化
使用PCA和生成模型生成鸢尾花数据集并可视化
本代码演示了如何使用PCA和生成模型来生成鸢尾花数据集,并通过散点图可视化原始数据和生成数据的分布。
synthetic_points = scaler.inverse_transform(np.array(gen_datas))
# 将标准化后的生成数据还原为原始数据
synthetic_points = pca.inverse_transform(synthetic_points)
# 将降维后的生成数据还原为原始维度数据
syn_x = synthetic_points[:, :2]
# 提取生成数据的前两个特征作为x坐标
syn_y = [species_value for _ in range(len(syn_x))]
# 生成数据的类别标签,与原始数据类别相同
x = iris_fulldata.data[:, :2]
# 提取原始数据的前两个特征作为x坐标
y = iris_fulldata.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
# 设置x和y坐标轴的最小值和最大值
plt.figure(2, figsize=(8, 6))
plt.clf()
# 创建一个新的画布
plt.scatter(x[:, 0], x[:, 1], c=y, cmap=plt.cm.Set1, edgecolor='k')
# 绘制原始数据的散点图,根据类别使用不同的颜色进行标记
plt.scatter(syn_x[:, 0], syn_x[:, 1], c=syn_y, cmap=plt.cm.Set2, edgecolor='k')
# 绘制生成数据的散点图,根据类别使用不同的颜色进行标记
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
# 设置x和y轴的标签为'Sepal length'和'Sepal width'
plt.show()
# 显示图形
代码解释:
synthetic_points = scaler.inverse_transform(np.array(gen_datas)):将标准化后的生成数据还原为原始数据。synthetic_points = pca.inverse_transform(synthetic_points):将降维后的生成数据还原为原始维度数据。syn_x = synthetic_points[:, :2]:提取生成数据的前两个特征作为x坐标。syn_y = [species_value for _ in range(len(syn_x))]:生成数据的类别标签,与原始数据类别相同。x = iris_fulldata.data[:, :2]:提取原始数据的前两个特征作为x坐标。y = iris_fulldata.target:提取原始数据的类别标签。x_min, x_max = x[:, 0].min() - 0.5, x[:, 0].max() + 0.5:设置x坐标轴的最小值和最大值。y_min, y_max = x[:, 1].min() - 0.5, x[:, 1].max() + 0.5:设置y坐标轴的最小值和最大值。plt.figure(2, figsize=(8, 6)):创建一个新的画布。plt.clf():清除画布上的内容。plt.scatter(x[:, 0], x[:, 1], c=y, cmap=plt.cm.Set1, edgecolor='k'):绘制原始数据的散点图,根据类别使用不同的颜色进行标记。plt.scatter(syn_x[:, 0], syn_x[:, 1], c=syn_y, cmap=plt.cm.Set2, edgecolor='k'):绘制生成数据的散点图,根据类别使用不同的颜色进行标记。plt.xlabel('Sepal length'):设置x轴的标签为'Sepal length'。plt.ylabel('Sepal width'):设置y轴的标签为'Sepal width'。plt.show():显示图形。
总结:
本代码通过使用PCA和生成模型,生成与鸢尾花数据集具有相似分布的合成数据,并使用matplotlib进行可视化。通过比较原始数据和生成数据的散点图,我们可以观察到生成模型能够有效地捕捉到原始数据的分布特征。
原文地址: https://www.cveoy.top/t/topic/jEsE 著作权归作者所有。请勿转载和采集!