4
respostas

sns.diverging_palette

Estou tentando utilizar o "sns.diverging_palette", porém, esta ocorrendo um erro e o grafico retorna em branco, sem valores.

Comando abaixo: cmap = sns.diverging_palette(220, 10, as_cmap=True)

msg de erro:

'float' object cannot be interpreted as an integer

Alguem sabe como corrigir esse erro?

4 respostas

Leonardo, não conheço muito de ML, mas segue resposta que achei sobre esse erro:

Espero que ajude,

Abcs!


O erro indica que o parâmetro as_cmap do método sns.diverging_palette() está sendo passado como um valor flutuante (float) em vez de um valor inteiro (int).

Para corrigir esse erro, basta passar um valor inteiro para o parâmetro as_cmap, como no exemplo abaixo:

cmap = sns.diverging_palette(220, 10, as_cmap=True)

Isso deve resolver o erro e permitir que o gráfico seja gerado corretamente. É importante lembrar de verificar se o restante do seu código está correto e não há outros erros que possam impedir a geração do gráfico.

Natan, Obrigado pelo retorno!

Veja abaixo a parte do script onde deu erro. Ja estou usando valores inteiros. A solução que encontrei foi utilizar outro grafico (cubehelix_palette), mas continuo sem entender pq o "diverging_palette" gera esse erro de numero inteiro.

sns.set(style="white")

Generate a mask for the upper triangle

mask = np.zeros_like(corr, dtype=np.bool) mask[np.triu_indices_from(mask)] = True

Set up the matplotlib figure

f, ax = plt.subplots(figsize=(11, 9))

Generate a custom diverging colormap

cmap = sns.cubehelix_palette(220, 10, as_cmap=True)

Draw the heatmap with the mask and correct aspect ratio

sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0, square=True, linewidths=.5, cbar_kws={"shrink": .5})

Fala Leonardo!

Essa função pode dar erro se for passado inteiro como argumento pq ela espera receber valores de cor em formato de ponto flutuante (por exemplo, 0.5, 1.0, etc.), e não em formato inteiro (por exemplo, 1, 2, etc.).

Para corrigir, basta converter os valores de cor de inteiro para ponto flutuante antes de passá-los como argumento para a função. Por exemplo, em vez de escrever diverging_palette(1, 0, 0), você poderia escrever diverging_palette(1.0, 0.0, 0.0). Isso irá garantir que a função receba valores de cor no formato esperado e, portanto, não dará erro.

Abcs!

É meu amigo, por isso achei estranho o erro. Já havia tentado ".0", mas aparece o mesmo erro.

Vou explorar os dados com um pouco mais de calma pra ver se encontro alguma inconsistencia. Estranho que sao os dados da aula, que teoricamente deveriam funcionar.