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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software