我有以下Pandas DataFrame,我使用它来比较不同分类器在多次迭代中的性能。在每次迭代之后,我将该特定分类器的排名保存到一个DataFrame中,它是所有迭代中排名的累积和( DataFrame的索引告诉排名从0到3,即总共4个分类器,0是最好的)。
DataFrame如下所示:
rankings = {'Classifier1': ['1', '2', '1', '0'],
'Classifier2': ['2', '1', '1', '0'],
'Classifier3': ['0', '1', '1', '2'],
'Classifier4': ['1', '0', '1', '2']}
df = pd.DataFrame(data = rankings)其格式为:
Classifier1 Classifier2 Classifier3 Classifier4
0 1 2 0 1
1 2 1 1 0
2 1 1 1 1
3 0 0 2 2我想使用Seaborn或其他方法为不同的分类器创建以下箱线图(如在this paper中):

发布于 2019-01-28 20:37:54
首先,我们需要将您的数据转换为数值而不是字符串。然后,我们将数据帧熔化为长格式,最后应用顶部带有swarmplot的boxplot
df = df.apply(pd.to_numeric).melt(var_name='Classifier', value_name='AUC Rank')
ax = sns.boxplot(data=df, x='Classifier', y='AUC Rank')
ax = sns.swarmplot(data=df, x='Classifier', y='AUC Rank', color='black')

https://stackoverflow.com/questions/54401223
复制相似问题