seaborn.regplot的x_bins参数x轴数据分箱规则及说明疑问
seaborn.regplot x_bins参数分箱逻辑说明
官方文档说明:
x_bins: int or vector, optional
将x变量分入离散分箱后估计集中趋势和置信区间。该分箱操作仅影响散点图的绘制方式,回归模型仍基于原始数据拟合。该参数既可以被解析为大小均匀(间距不一定均匀)的分箱数量,也可以被解析为分箱中心的位置。使用该参数时,x_estimator的默认值为NumPy.mean。
你提到的易混淆表述可按照两种传参场景分别理解,对应示例如下:
场景1:传入整数作为x_bins参数
此时程序会根据x变量的取值范围,生成数量等于传入整数、覆盖的x轴数值区间长度相等的分箱,这里的「大小均匀」指的就是分箱的区间长度均匀。标注的「间距不一定均匀」指的是最终绘制出的分箱统计散点的间距,因为如果某个区间内没有有效样本,就不会生成对应散点,最终呈现的散点间距就会出现不均匀的情况。
示例代码:
import seaborn as sns import numpy as np # 生成模拟数据 x = np.random.randn(1000) y = 2 * x + np.random.randn(1000) # 传入整数5,将x的取值范围平均切为5个区间分箱 sns.regplot(x=x, y=y, x_bins=5)
代码效果:x的取值范围大致在-3到3之间,会被平均切为[-3,-1.8)、[-1.8,-0.6)、[-0.6,0.6)、[0.6,1.8)、[1.8,3]5个区间,每个区间内的样本统计y的均值和置信区间作为散点和误差棒展示,回归曲线仍使用全部1000个原始样本拟合,不受分箱影响。
场景2:传入向量作为x_bins参数
此时传入向量内的每个数值会被直接识别为分箱的中心位置,你可以根据需求自定义分箱的分布,不需要均匀覆盖x轴全范围,适合重点观察特定x区间数据规律的场景。
示例代码:
# 传入自定义分箱中心,仅统计x接近-2、0、2三个位置的y值分布 sns.regplot(x=x, y=y, x_bins=[-2, 0, 2])
代码效果:程序会按照距离最近原则,把x样本分到和自己数值最接近的分箱中心对应的分组里,分别统计每个分组的y均值和置信区间展示,回归拟合逻辑依然使用全部原始数据。
内容的提问来源于stack exchange,提问作者middle-mood
相关产品推荐
相关产品推荐

