ML - Compreendendo os dados com visualização
Introdução
No capítulo anterior, discutimos a importância dos dados para algoritmos de aprendizado de máquina, juntamente com algumas receitas Python para entender os dados com estatísticas. Existe outra forma chamada Visualização, para entender os dados.
Com a ajuda da visualização de dados, podemos ver como os dados se parecem e que tipo de correlação é mantida pelos atributos dos dados. É a maneira mais rápida de ver se os recursos correspondem à saída. Com a ajuda das seguintes receitas do Python, podemos entender os dados de ML com estatísticas.
Gráficos univariados: Compreendendo os atributos de forma independente
O tipo mais simples de visualização é a visualização de variável única ou “univariada”. Com a ajuda da visualização univariada, podemos entender cada atributo de nosso conjunto de dados de forma independente. A seguir estão algumas técnicas em Python para implementar a visualização univariada -
Histogramas
Os histogramas agrupam os dados em caixas e é a maneira mais rápida de se ter uma ideia sobre a distribuição de cada atributo no conjunto de dados. A seguir estão algumas das características dos histogramas -
Ele nos fornece uma contagem do número de observações em cada compartimento criado para visualização.
A partir da forma da caixa, podemos facilmente observar a distribuição, ou seja, se ela é gaussiana, distorcida ou exponencial.
Os histogramas também nos ajudam a ver possíveis outliers.
Exemplo
O código mostrado abaixo é um exemplo de script Python criando o histograma dos atributos do conjunto de dados Pima Indian Diabetes. Aqui, estaremos usando a função hist () no Pandas DataFrame para gerar histogramas ematplotlib para traçá-los.
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.hist()
pyplot.show()
Resultado
A saída acima mostra que ele criou o histograma para cada atributo no conjunto de dados. A partir disso, podemos observar que talvez a idade, o pedi e o atributo teste possam ter distribuição exponencial, enquanto a massa e o plas têm distribuição gaussiana.
Gráficos de densidade
Outra técnica rápida e fácil para obter a distribuição de cada atributo são os gráficos de densidade. Também é como um histograma, mas com uma curva suave desenhada na parte superior de cada compartimento. Podemos chamá-los de histogramas abstratos.
Exemplo
No exemplo a seguir, o script Python gerará Density Plots para a distribuição de atributos do conjunto de dados Pima Indian Diabetes.
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
pyplot.show()
Resultado
A partir da saída acima, a diferença entre gráficos de densidade e histogramas pode ser facilmente compreendida.
Gráficos de caixa e bigode
Os gráficos Box e Whisker, também chamados de boxplots em resumo, são outra técnica útil para revisar a distribuição da distribuição de cada atributo. A seguir estão as características desta técnica -
É de natureza univariada e resume a distribuição de cada atributo.
Ele desenha uma linha para o valor médio, ou seja, para a mediana.
Ele desenha uma caixa em torno de 25% e 75%.
Também desenha bigodes que nos darão uma ideia sobre a disseminação dos dados.
Os pontos fora dos bigodes significam os valores atípicos. Os valores atípicos seriam 1,5 vezes maiores do que o tamanho da propagação dos dados intermediários.
Exemplo
No exemplo a seguir, o script Python gerará Density Plots para a distribuição de atributos do conjunto de dados Pima Indian Diabetes.
from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False,sharey=False)
pyplot.show()
Resultado
No gráfico acima da distribuição dos atributos, pode-se observar que idade, teste e pele aparecem enviesados para valores menores.
Gráficos multivariados: interação entre múltiplas variáveis
Outro tipo de visualização é a visualização multivariável ou “multivariada”. Com a ajuda da visualização multivariada, podemos entender a interação entre vários atributos de nosso conjunto de dados. A seguir estão algumas técnicas em Python para implementar a visualização multivariada -
Gráfico de Matriz de Correlação
A correlação é uma indicação sobre as mudanças entre duas variáveis. Em nossos capítulos anteriores, discutimos os coeficientes de correlação de Pearson e a importância da correlação também. Podemos plotar a matriz de correlação para mostrar qual variável está tendo uma correlação alta ou baixa em relação a outra variável.
Exemplo
No exemplo a seguir, o script Python irá gerar e traçar a matriz de correlação para o conjunto de dados Pima Indian Diabetes. Ele pode ser gerado com a ajuda da função corr () no Pandas DataFrame e plotado com a ajuda do pyplot.
from matplotlib import pyplot
from pandas import read_csv
import numpy
Path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(Path, names=names)
correlations = data.corr()
fig = pyplot.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = numpy.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
pyplot.show()
Resultado
A partir da saída acima da matriz de correlação, podemos ver que ela é simétrica, ou seja, a parte inferior esquerda é igual à parte superior direita. Observa-se também que cada variável se correlaciona positivamente entre si.
Gráfico de matriz de dispersão
Os gráficos de dispersão mostram o quanto uma variável é afetada por outra ou a relação entre elas com a ajuda de pontos em duas dimensões. Os gráficos de dispersão são muito semelhantes aos gráficos de linha no conceito de que usam eixos horizontais e verticais para plotar pontos de dados.
Exemplo
No exemplo a seguir, o script Python irá gerar e traçar a matriz de dispersão para o conjunto de dados Pima Indian Diabetes. Ele pode ser gerado com a ajuda da função scatter_matrix () no Pandas DataFrame e plotado com a ajuda do pyplot.
from matplotlib import pyplot
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
scatter_matrix(data)
pyplot.show()