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

How do I display numerical values that come from two labels (0,1) in two different colors in python?

我目前正在研究 二进制 SVM classifier。为了可视化 classifier 的工作原理,我想创建一个 概率密度函数直方图 (用 scikit 计算),它显示单个数据点的标量(无论它属于到 class 0 或 1).

剧情:

请注意,在 SVM 中,classifier 的 'cutting edges' 是 -1 和 1。该图很好地描述了在 [-1 处有一些 决策边界, 1].

回到我的问题: 我想分别给标签 0 和 1 的数据点着色 以便分析 soft margin(-1 和 1 之间的区域)

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

我如何 link 数组和数据框将类别 0 的数值绘制在 'green' 中,类别 1 绘制为 'blue' ?

代码:

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

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

有人有聪明的方法吗? 提前致谢!

编辑:示例代码:

概率标量。 fct.

 np.array([.5,0.6,1,1,1,-1,-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,1,-1,-1,-1,-.5,-0.6])
df['category'] = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.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']
)

这将打印以下结果: