Bokeh HoloViews散点图的回归线
在本文中,我们将介绍如何在Bokeh和HoloViews中为散点图添加回归线。Bokeh是一个用于交互式数据可视化的Python库,而HoloViews则是基于Bokeh的高级可视化工具。
回归线是一条直线,用于表示散点图中的趋势或关联关系。它可以帮助我们更好地理解数据集中的模式和变化。
为了演示如何在Bokeh和HoloViews中为散点图添加回归线,我们将使用一个虚构的汽车销售数据集。该数据集包含了汽车的价格和里程数,我们将根据这些数据绘制散点图,并为其添加回归线。
首先,让我们导入所需的库和模块。
import pandas as pd
import numpy as np
import holoviews as hv
from holoviews import opts
from sklearn.linear_model import LinearRegression
from bokeh.models import Slope
hv.extension('bokeh')
接下来,我们将创建一个虚构的汽车销售数据集。
np.random.seed(0)
n_samples = 100
price = np.random.randint(10000, 50000, n_samples)
mileage = np.random.randint(5000, 80000, n_samples)
data = pd.DataFrame({'Price': price, 'Mileage': mileage})
使用HoloViews,我们可以轻松地将数据集转换为散点图。
scatter_plot = hv.Points(data, ['Price', 'Mileage']).opts(size=6)
scatter_plot
通过运行上述代码,我们将得到一个显示汽车销售价格和里程数的散点图。
现在,让我们添加回归线到散点图中。
regression_line = hv.Curve(((data['Price'].min(), data['Price'].max()), (data['Mileage'].min(), data['Mileage'].max())))
scatter_plot * regression_line
通过将回归线添加到散点图中,我们可以更清楚地看到数据集中价格和里程数之间的趋势。
不过,这还不是真正的回归线,因为它只是一条连接数据集的最小和最大值的直线。为了获得更准确的回归线,我们需要使用线性回归模型来拟合数据。
X = data[['Mileage']] # 自变量(里程数)
y = data['Price'] # 因变量(价格)
regressor = LinearRegression()
regressor.fit(X, y)
intercept = regressor.intercept_ # 截距
slope = regressor.coef_[0] # 斜率
regression_line = hv.Curve(((data['Mileage'].min(), data['Mileage'].max()),
(slope * data['Mileage'].min() + intercept, slope * data['Mileage'].max() + intercept)))
scatter_plot * regression_line
通过使用LinearRegression
模型,我们可以根据里程数预测汽车的价格,并绘制出回归线。
阅读更多:Bokeh 教程
总结
在本文中,我们介绍了如何在Bokeh和HoloViews中为散点图添加回归线。首先,我们创建了一个虚构的汽车销售数据集,并使用HoloViews将其转换为散点图。然后,我们展示了如何添加简单的回归线,以及如何使用线性回归模型拟合数据并绘制准确的回归线。通过使用Bokeh和HoloViews,我们可以轻松地创建具有回归线的交互式散点图,从而更好地理解和分析数据集中的趋势和关系。