10.3.3 目标特征的分布
在本实例中将创建两个模型,这两个模型是我们本实例问题中的目标:
- 产品价值分布(M1 的目标变量)
- 消费者投诉摘要(问题是什么,用几个词描述)(M2 的目标变量)
在接下来的内容中,我们将研究这两个目标变量的分布情况。
(1)使用Plotly Express创建一个柱状图,该图显示了不同产品子集的分布情况。具体实现代码如下所示。
fig = px.bar((df['product']
.value_counts(ascending=False)
.to_frame()),
x='product',
template='plotly_white',
title='Product Subset Distribution')
fig.update_traces(marker_line_color='#F1A424',
marker_line_width=0.1,
marker={'color':'#F1A424'},width=0.5)
fig.show("png")
对上述代码的具体说明如下:
- 使用 df['product'].value_counts(ascending=False).to_frame() 计算了每个产品子集的计数,并将结果转换为 DataFrame。
- 使用 Plotly Express 的 px.bar() 函数创建了柱状图,指定了 x 轴为 'product' 列,模板为 'plotly_white',并设置了图表标题为 'Product Subset Distribution'。
- 使用 fig.update_traces() 来自定义柱状图的样式,包括条形的颜色、线条颜色和线条宽度。
- 最后,使用 fig.show("png") 显示了生成的柱状图。
执行效果如图10-24所示,这个柱状图可以帮助我们可视化不同产品子集的分布情况,有助于进一步的数据分析和理解。
图10-24 不同产品子集的分布柱状图
(2)使用Plotly Express创建一个柱状图,该图显示了不同投诉问题的分布情况。具体来说,它绘制了 'issue' 列中不同问题的计数。具体实现代码如下所示。
ldf = df['issue'].value_counts(ascending=True).to_frame()
fig = px.bar(ldf,x='issue',
template='plotly_white',
title='Issue of Complaint',
text_auto=True)
fig.update_layout(height=1500)
fig.update_traces(marker_line_color='#F1A424',marker_line_width=0.1,
marker={'color':'#F1A424'},width=0.5)
fig.show("png")
执行效果如图10-25所示。
图10-25 不同投诉问题的分布情况
我们可以注意到在产品和问题特征中,存在一些目标类别不平衡的情况。接下来让我们坚持使用分层抽样,需要确保每个类别在两个数据集中都有代表数据。