web-dev-qa-db-fra.com

Tracés linéaires simples utilisant Seaborn

J'essaie de tracer une courbe ROC en utilisant Seaborn (Python). Avec matplotlib, j'utilise simplement la fonction plot:

plt.plot(one_minus_specificity, sensitivity, 'bs--')

one_minus_specificity et sensitivity sont deux listes de valeurs appariées.

Existe-t-il de simples homologues de la fonction de parcelle en mer-né? J'ai jeté un coup d'œil à la galerie, mais je n'ai trouvé aucune méthode simple.

49
Titus Pullo

Comme Seaborn utilise également matplotlib pour effectuer son tracé, vous pouvez facilement combiner les deux. Si vous voulez seulement adopter le style de seaborn the set_style la fonction devrait vous aider à démarrer:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

sns.set_style("darkgrid")
plt.plot(np.cumsum(np.random.randn(1000,1)))
plt.show()

Résultat:

enter image description here

72
hitzg

Cela est possible en utilisant seaborn.lineplot() mais cela implique un travail supplémentaire de conversion des tableaux numpy en pandas dataframe. Voici un exemple complet:

# imports
import seaborn as sns
import numpy as np
import pandas as pd

# inputs
In [41]: num = np.array([1, 2, 3, 4, 5])
In [42]: sqr = np.array([1, 4, 9, 16, 25])

# convert to pandas dataframe
In [43]: d = {'num': num, 'sqr': sqr}
In [44]: pdnumsqr = pd.DataFrame(d)

# plot using lineplot
In [45]: sns.set(style='darkgrid')
In [46]: sns.lineplot(x='num', y='sqr', data=pdnumsqr)
Out[46]: <matplotlib.axes._subplots.AxesSubplot at 0x7f583c05d0b8>

Et nous obtenons l'intrigue suivante:

square plot

8
kmario23

Oui, vous pouvez faire la même chose à Seaborn directement. Ceci est fait avec tsplot () qui permet soit un seul tableau en entrée, soit deux tableaux où l'autre est 'time', c'est-à-dire l'axe des x.

import seaborn as sns

data =  [1,5,3,2,6] * 20
time = range(100)

sns.tsplot(data, time)

enter image description here

2
mikkokotila