📜  Python Bokeh – 可视化 Iris 数据集(1)

📅  最后修改于: 2023-12-03 15:33:58.292000             🧑  作者: Mango

Python Bokeh – 可视化 Iris 数据集

Bokeh 是 Python 中的一个交互式可视化库,可以制作一些非常酷炫的交互式图表和可视化。在这篇文章中,我们将使用 Bokeh 可视化 Iris 数据集。

简介

鸢尾花(Iris)数据集是一份经典的数据集,在机器学习和统计学领域中非常常用。数据集包含 150 行数据,每行数据对应一朵鸢尾花,包含 4 个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度,以及每朵花属于三个不同种类中的哪一种。

获取数据

首先,我们需要获取 Iris 数据集。在 Python 中,可以使用 Scikit-learn 提供的 datasets 模块来获取数据:

from sklearn import datasets

iris = datasets.load_iris()
绘制花萼长度和花萼宽度的散点图

接下来,我们将绘制一个散点图,用于显示花萼长度和花萼宽度之间的关系。我们可以通过 Pandas 将数据集加载为 Pandas DataFrame,然后使用 Bokeh 来进行可视化。

import pandas as pd
from bokeh.plotting import figure
from bokeh.io import show

iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)

plot = figure(title="花萼长度 vs 花萼宽度", x_axis_label="花萼长度", y_axis_label="花萼宽度")
plot.circle(x=iris_df["sepal length (cm)"], y=iris_df["sepal width (cm)"], size=10)

show(plot)

这将绘制一个散点图,显示花萼长度和花萼宽度之间的关系。在 Bokeh 中,可以通过类似于 Matplotlib 中的 pyplot 来进行绘图,这里我们使用 figure 创建一个绘图对象,并设置标题和轴标签。然后,我们使用 circle 方法画出所有的点,并指定其 x 和 y 坐标。

绘制所有特征之间的关系

接下来,我们将通过 Bokeh 绘制所有特征之间的散点图和联合分布图。我们可以使用 Pandas 的 Corr() 方法获取所有特征之间的相关系数,并使用 Bokeh 绘制联合分布图。

from bokeh.layouts import gridplot
from bokeh.models import ColumnDataSource

iris_df["species"] = iris.target_names[iris.target]
source = ColumnDataSource(iris_df)

scatter_plots = []
for i, feature1 in enumerate(iris_df.columns[:-1]):
    for j, feature2 in enumerate(iris_df.columns[:-1]):
        if i != j:
            scatter_plot = figure(title=f"{feature1} vs {feature2}", x_axis_label=feature1, y_axis_label=feature2)
            scatter_plot.circle(x=feature1, y=feature2, size=10, source=source, legend_field="species", color="species")
            scatter_plots.append(scatter_plot)

grid = gridplot([scatter_plots[i:i+4] for i in range(0, len(scatter_plots), 4)])
show(grid)

此代码将绘制一个 4x4 网格,每个小图都显示了两个不同的特征之间的关系。我们可以通过 ColumnDataSource 将 Pandas DataFrame 传递到 Bokeh 中,然后使用 circle 方法画出所有的点,并指定它们的源和颜色。Bokeh 将自动以每一种花的颜色显示点。

总结

这里我们学习了如何使用 Bokeh 来可视化 Iris 数据集,包括绘制花萼长度和花萼宽度的散点图、以及绘制所有特征之间的散点图和联合分布图。除此之外,Bokeh 还支持各种其他类型的图表,例如条形图、折线图、热力图等等,您可以根据需要自由选择所需的可视化类型。