visualização de dados baseada em Python: a partir de uma dimensão para um multidimensional

anuário

Um, IRIS conjunto de dados descreve
dois unidimensional visualização de dados
tridimensional de visualização de dados
de quatro, de visualização de dados multidimensional
V. Referências


Um, íris conjunto de dados descreve

íris conjunto de dados tem 150 observações e cinco variáveis, ou seja, comprimento sépalas, sépalas largura, comprimento pétala, largura pétala, espécie, que espécies tem três valores: setosa, virginica, versicolor, de qualquer maneira, é Luan flor 3 diferentes variedades do mesmo, cada uma com 50 observações. Detalhes são os seguintes.

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

%matplotlib inline
sns.set(style="white", color_codes=True)

#加载iris数据集
from sklearn.datasets import load_iris
iris_data = load_iris()
iris = pd.DataFrame(iris_data['data'], columns=iris_data['feature_names'])
iris = pd.merge(iris, pd.DataFrame(iris_data['target'], columns=['species']), left_index=True, right_index=True)
labels = dict(zip([0,1,2], iris_data['target_names']))
iris['species'] = iris['species'].apply(lambda x: labels[x])
iris.head()

iris data.png

Nós da íris conjunto de dados, por exemplo, demonstra como usar matplotlib, Seaborn, pandas, sklearn unidimensional, bidimensional e visualização de dados multi-dimensional, análise exploratória de dados, modelagem para o último para fornecer algumas idéias.

Em segundo lugar, unidimensional visualização de dados

Python é baseado Seaborn matplotlib ferramentas de visualização de dados. Ele oferece uma série de alto nível invólucro de funções com analistas ajuda de dados para desenhar rapidamente belas dados gráficos, e evitar uma série de problemas de configuração de parâmetros extras.

  • Desenhe um relacionamento boxplot com as características individuais das espécies, você pode ver as diferentes variedades de cauda Phoenix passou comprimento pétala única dimensão pode muito bem ter sido esculpido, especialmente o setosa comprimento pétala da diferença de comprimento pétala com as outras duas espécies não são muito boas , para colocá-lo um reconheceu.
# look at an individual feature in Seaborn through a boxplot

sns.boxplot(x='species', y='petal length (cm)', data=iris)

box plot

  • kdeplot mapas de densidade nucleares
# kdeplot looking at univariate relations
# creates and visualizes a kernel density estimate of the underlying feature

sns.FacetGrid(iris, hue='species',size=6) \
   .map(sns.kdeplot, 'petal length (cm)') \
    .add_legend()

kdeplot

  • violinplot de piano gráfico: combina as características e caixa de gráfico de pontos densidade de grãos de estimativa, caracterizado pelo facto de uma ou mais variáveis ​​de classificação, os dados de distribuição e as variáveis ​​contínuas foram comparados, observou-se uma pluralidade de distribuição de dados maneira eficaz.
# A violin plot combines the benefits of the boxplot and kdeplot 
# Denser regions of the data are fatter, and sparser thiner in a violin plot

sns.violinplot(x='species', y='petal length (cm)', data=iris, size=6)

enredo violino

Em terceiro lugar, a visualização de dados bidimensional

  • Scatter: espécie de identificação de acordo com a cor FacetGrid, para nós olhar para as relações entre os dados, aqui usa duas características visual, setosa é sempre bem reconhecido, virginica versicolor é ainda um pouco com devoção.
# use seaborn's FacetGrid to color the scatterplot by species

sns.FacetGrid(iris, hue="species", size=5) \
    .map(plt.scatter, "sepal length (cm)", "sepal width (cm)") \
    .add_legend()

gráfico de dispersão por espécies

  • pairplot: para mostrar as características das relações de pares, fantástico Ok!
# pairplot shows the bivariate relation between each pair of features
# From the pairplot, we'll see that the Iris-setosa species is separataed from the other two across all feature combinations
# The diagonal elements in a pairplot show the histogram by default
# We can update these elements to show other things, such as a kde

sns.pairplot(iris, hue='species', size=3, diag_kind='kde')

pairplot

Em quarto lugar, visualização de dados multi-dimensional

Aqui visualização de dados multidimensional não será Seaborn usado, ele é usado principalmente pandas, matplotlib e sklearn.

Curva 1. Andrews

Andrews valor de atributo curva de cada amostra é convertido em uma seqncia de coeficientes de Fourier para criar a curva. Por curva padrão para cada classe de cores diferentes podem ser visualizados para dados de fragmentação, a curva das amostras pertencentes à mesma classe e, geralmente, aproximar a constituir uma estrutura maior.

# Andrews Curves involve using attributes of samples as coefficients for Fourier series and then plotting these

pd.plotting.andrews_curves(iris, 'species')

curvas Andrews

2. Coordenadas Paralelas

coordenadas paralelas também é uma técnica de visualização multidimensional. Pode ser visto nas categorias de dados e outras estatísticas do estimado visualmente. Quando utilizando coordenadas paralelas, com cada ponto de engate segmento. Cada linha vertical representa uma propriedade. Ela representa um grupo do segmento de engate de um ponto de dados. Pode ser uma classe de pontos de dados mais próximos.

# Parallel coordinates plots each feature on a separate column & then draws lines connecting the features for each data sample

pd.plotting.parallel_coordinates(iris, 'species')

coordenadas paralelas

3. RadViz gráfico de radar

RadViz dados multidimensional é uma forma visual. Ele é baseado no algoritmo básico minimização pressão da mola (também frequentemente usado em análise complexa rede). Resumidamente, um conjunto de pontos em um plano, cada ponto representa uma propriedade, no caso, temos quatro pontos, é colocado em um círculo unitário, então você pode imaginar cada conjunto de dados através de um acoplamento da primavera para cada ponto, e a sua força elástica proporcional ao valor do atributo (valores de atributo foram normalizados), os dados de posição fixados na posição plana da mola são equilibradas. Amostras de diferentes classes representam diferentes cores.

# radviz  puts each feature as a point on a 2D plane, and then simulates
# having each sample attached to those points through a spring weighted by the relative value for that feature

pd.plotting.radviz(iris, 'species')

radviz

4. Análise do Factor (FactorAnalysis)

análise factorial é o estudo de técnicas estatísticas para extrair os factores comuns a partir do grupo refere-se a variável. Foi proposto pela primeira vez pelo psicólogo britânico CE Spearman. Ele encontrou entre os estudantes de todos os indivíduos com alguma relevância, uma empreendedores de divisão, muitas vezes outra todos os assuntos é relativamente bom, então, presumivelmente, se houver algum potencial fator comum, também conhecida como a inteligência geral certas condições impacto no desempenho do aluno. A análise fatorial pode identificar fator oculto em muitos variável típica. As variáveis ​​incluídas num essencialmente da mesma ordem, o número de variáveis ​​pode ser reduzida, ainda testar a hipótese de que as relações entre as variáveis.

Um simples linear modelo com base em variáveis ​​latentes gaussianas, assumindo que cada um observações dimensionais baixas são feitos variável pelo potencial de ruído configuração normal.

from sklearn import decomposition

fa = decomposition.FactorAnalysis(n_components=2)

X = fa.fit_transform(iris.iloc[:,:-1].values)

pos=pd.DataFrame()
pos['X'] =X[:, 0]
pos['Y'] =X[:, 1]
pos['species'] = iris['species']

ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

fa

A análise de componente principal (PCA)

análise de componente principal é um método de redução de dimensionalidade evoluiu por análise factorial, convertendo o original transformada ortogonal, em que uma características linearmente independentes, características obtidas após a conversão é referido como um componente principal. análise de componentes principais das dimensões originais pode ser reduzida dimensão de n dimensões, existe uma situação especial caso, é o de reduzir a dimensão de uma análise do componente principal bidimensional, em cujo caso podem ser dados multi-dimensionais para um ponto no plano, para alcançar cubo fins de visualização.

from sklearn import decomposition

pca = decomposition.PCA(n_components=2)

X = pca.fit_transform(iris.iloc[:,:-1].values)

pos=pd.DataFrame()
pos['X'] =X[:, 0]
pos['Y'] =X[:, 1]
pos['species'] = iris['species']

ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

pca

 

Note-se, por redução de dimensionalidade PCA realmente perder alguma informação, podemos também olhar para os dois principais componentes da retenção pode explicar o quanto os dados originais.

pca.fit(iris.iloc[:,:-1].values).explained_variance_ratio_

saída: matriz ([0,92461621, 0,05301557 ])
podem ver dois componentes principais retida no primeiro componente principal pode explicar 92,5% da variação original do segundo componente principal pode explicar a variação de 5,3% do original. Isto significa que, depois de cair em um ainda bidimensional mantém 97,8% da informação original.

6. A análise de componente independente (ICA)

Análise de componentes independentes para dividir o sinal em vários sub-componentes da fonte de maior independência possível, que não foi originalmente destinado a redução dimensionalidade, mas uma sobreposição de divisão do sinal.

from sklearn import decomposition

fica = decomposition.FastICA(n_components=2)

X = fica.fit_transform(iris.iloc[:,:-1].values)

pos=pd.DataFrame()
pos['X'] =X[:, 0]
pos['Y'] =X[:, 1]
pos['species'] = iris['species']

ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

ICA

7. O governante multi-dimensional (escalonamento multidimensional, MDS)

escalonamento multidimensional tentando encontrar uma boa caracterização de low-dimensional espaço a partir dos dados originais de alta dimensão. Em suma, multi-dimensional vara de medição é usado para dados de similaridade, ele tenta dados do modelo de similaridade com um espaço geometria distância, ele é simples, com uma distância de espaço bidimensional para representar a relação de espaço de alta dimensão . Os dados podem ser semelhanças entre objectos, entre a frequência de interacção entre as moléculas ou índice comércio nacional. Isto é diferente dos métodos anteriores, os métodos anteriores são introduzidos dados em bruto, mas no exemplo da escala de medição de multi-dimensional, a entrada é baseado na distância Euclidiana da matriz de distância. Multi-dimensional vara de medição algoritmo iterativo é um processo contínuo, portanto, requer o uso de max_iter para especificar o número máximo de iterações, enquanto o cálculo do algoritmo acima é um demorado dos maiores.

from sklearn import manifold

from sklearn.metrics import euclidean_distances

similarities = euclidean_distances(iris.iloc[:,:-1].values)
mds = manifold.MDS(n_components=2, max_iter=3000, eps=1e-9, dissimilarity="precomputed", n_jobs=1)
X = mds.fit(similarities).embedding_

pos=pd.DataFrame(X, columns=['X', 'Y'])
pos['species'] = iris['species']

ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

mds

8. TSNE (distribuído-t estocástico Vizinho Embedding)

t-SNE (t distribuídos aleatoriamente incorporação bairro) é algoritmo de redução de dimensionalidade não-linear para explorar dados de alta-dimensional. Com base na semelhança observada através da identificação de pontos de dados que têm uma pluralidade de grupos de características para encontrar os padrões nos dados, os dados multidimensional é mapeado para dois ou mais dimensões adequadas para observação humana. Essencialmente um dimensionais técnicas de redução e de visualização. A melhor maneira de usar o algoritmo deve ser usado para a análise exploratória de dados.

from sklearn.manifold import TSNE

iris_embedded = TSNE(n_components=2).fit_transform(iris.iloc[:,:-1])

pos = pd.DataFrame(iris_embedded, columns=['X','Y'])
pos['species'] = iris['species']

ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virgnica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

TSNE

Ah, eu acho que os resultados da mais TSNE bonito / (/ / • / ω / • / /) /

V. Referências

Publicado 296 artigos originais · Louvor obteve 221 · vista 540 000 +

Acho que você gosta

Origin blog.csdn.net/qq_36387683/article/details/102516108
Recomendado
Clasificación