微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中以两种不同颜色显示来自两个标签0,1的数值?

如何解决如何在python中以两种不同颜色显示来自两个标签0,1的数值?

我目前正在研究二元 SVM 分类。为了可视化分类器的工作原理,我想创建一个概率密度函数直方图(使用 scikit 计算),显示单个数据点的标量(无论它属于 0 类还是 1 类)。

情节:

Histogram of probability density function

请注意,在 SVM 中,分类器的“切割边缘”是 -1 和 1。该图很好地描绘了在 [-1,1] 处存在一些决策边界。

回到我的问题: 我想分别为标签 0 和 1 的数据点着色 以分析软边距(-1 和 1 之间的区域)

概率密度函数存储为np.array 相应的标签存储在 Pandas 数据帧中。

如何将类别 0 的数值绘制在即“绿色”和类别 1 中绘制为“蓝色”的数组和数据框联系起来?

代码

plt.hist(decisions_function_cv,bins=500,color='navy')

我试图将两者保存在同一个数据帧中,但我无法解密我如何以上述预期方式将其编程到决策函数中:(

Some1 有一个聪明的方法? 提前致谢!

编辑:示例代码

probab 的标量。事实。

 np.array([.5,0.6,1,-1,-.5,-0.6])

带有相应标签的风格化数据框:

df['labels']

0      1.0
1      1.0
2      1.0
3      1.0
4      1.0
5      1.0
6      0.0
7      0.0
8      1.0
9      1.0

*类别 1 的数值应绘制为蓝色

类别 0 的数值应以绿色绘制

解决方法

使用 seaborn,您可以轻松构建复杂的 pyplot 图表。

首先,我们重建您的数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['values'] = np.array([.5,0.6,1,-1,-.5,-0.6])
df['category'] = [1.0,1.0,0.0,1.0]

print(df)

   values  category
0     0.5       1.0
1     0.6       1.0
2     1.0       1.0
3     1.0       1.0
4     1.0       1.0
5    -1.0       1.0
6    -1.0       0.0
7    -1.0       0.0
8    -0.5       1.0
9    -0.6       1.0

然后我们使用您的数据集并使用“类别”列配置颜色(hue 参数)(请注意,您定义的调色板独立于实际值):

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('whitegrid')

sns.histplot(
    data=df,x="values",hue="category",palette=['green','blue']
)

这将打印以下结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。