[PYTHON] Présentation du potentiel du nuage de points de Plotly avec des exemples pratiques

salut! Cet article est le calendrier de l'Avent de Kaggle, Diagramme dispersé de la bibliothèque de visualisation de données de Python "Plotly" Je pensais que cela irait bien avec des compétitions telles que Kaggle, alors je voudrais le présenter.

Tout d'abord, j'aimerais que vous regardiez un exemple concret. ** Exemple spécifique 1 ** Tracer la représentation distribuée des mots en 3 dimensions tsne2-compressor.gif

** Exemple spécifique 2 ** Données de location de parcelles de 23 quartiers de Tokyo sur les données cartographiques mynabi-compressor (1).gif

Qu'est-ce que tu penses! La force est que ces intrigues informatives ne prennent que quelques lignes. Il existe de nombreuses bibliothèques de visualisation pour Python, Je pense que Plotly a les caractéristiques uniques suivantes.

--Peut être écrit en quelques lignes --Peut être utilisé de manière interactive ―― Puisque vous pouvez zoomer, vous pouvez vérifier les détails.

Examinons de plus près la notation de l'intrigue précédente.

environnement

Python 3.7.4 plotly 4.1.0

Exemple spécifique 1

Ensemble de données utilisé

Nous avons préparé une version dimensionnellement compressée de la représentation distribuée des mots. Cette fois, le corpus utilise text8, l'apprentissage utilise la classe word2vec de gensim et la compression de dimension utilise t-sne. Stockez la représentation distribuée et les mots préparés dans le pandas DataFrame. Screen Shot 2019-12-03 at 16.29.19.png

(Pour text8, je me suis référé à https://hironsan.hatenablog.com/entry/japanese-text8-corpus.)

code

import plotly.express as px
fig = px.scatter_3d(df, x='x', y='y', z='z',text='word')
fig.show()

La description

Vous pouvez écrire en seulement 3 lignes. Si vous passez le nom de la colonne au bloc de données et x, y, z, texte respectivement, ce sera comme ci-dessus Les parcelles sont possibles.

Exemple spécifique 2

Ensemble de données utilisé

J'ai utilisé les données de My Navi x SIGNATE Student Cup 2019. Vous pouvez en savoir plus sur le concours sur mon blog. http://zerebom.hatenablog.com/entry/2019/11/09/121233?_ga=2.241090371.157833494.1575468424-1743001014.1569899454

Ce concours visait à prédire le loyer de chaque propriété en utilisant les informations de location des 23 quartiers de Tokyo. https://signate.jp/competitions/182

J'ai formaté ces données et préparé le DataFrame suivant. Screen Shot 2019-12-03 at 16.46.49.png

Chaque colonne a la signification suivante

--id: numéro de série --y_train: Corriger les données de loyer --oof: données de prévision de loyer --diff: valeur prédite-valeur correcte --abs: Valeur prédite - Valeur absolue de la valeur de réponse correcte --loc_lat / loc_lon: Latitude et longitude

code

import plotly.express as px
px.set_mapbox_access_token('YOUR_API_KEY')
fig = px.scatter_mapbox(df, lat="loc_lat", lon="loc_lon",  color="diff", size="abs",text='id',
                  color_continuous_scale=px.colors.sequential.Viridis, size_max=30, zoom=10)
fig.show()

La description

Ce code a été utilisé pour savoir dans quelles zones il y a de nombreuses locations avec de grandes erreurs de prédiction après avoir réellement appris les données de la compétition.

Afin de faire correspondre les données cartographiques avec la latitude et la longitude avec Plotly, il est nécessaire de s'inscrire à l'avance auprès d'un service appelé MapBox et d'obtenir une clé API. Vous pouvez facilement l'obtenir sur ce site. (https://account.mapbox.com/)

Pour l'afficher sur la carte, il est nécessaire de spécifier l'argument comme suit. Cette fois

--color ... Erreur de valeur prédite --size ... Valeur absolue de l'erreur de valeur prédite --text (chaîne de caractères affichée superposée sur l'élément) ... ID de propriété

color="diff", size="abs",text='id'

Spécifiez la sélection de la carte des couleurs, la taille maximale des éléments et le zoom de la carte comme suit. color_continuous_scale=px.colors.sequential.Viridis, size_max=30, zoom=10

Réglages fins

Il sera modifié si vous passez le paramètre dans le type de dictionnaire dans fig.update_layout. Le site officiel de plotly a de nombreux exemples, et le code et l'intrigue sont un ensemble, donc Si vous avez un paramètre qui vous intéresse, vous pouvez consulter le site officiel.

(https://plot.ly/python/text-and-annotations/#text-font-as-an-array--styling-each-text-element)

[Exemple]: Je souhaite modifier la police et agrandir les caractères.

fig.update_layout(
  font={"family":"Open Sans",
       "size":16})

en conclusion

J'ai présenté Plotly parce que je pensais que peu de gens l'utilisaient pour son potentiel. Surtout, il est compatible avec les données 3D et les données cartographiques, veuillez donc l'utiliser!

référence

Charger et utiliser le modèle japonais formé de Word2Vec https://qiita.com/omuram/items/6570973c090c6f0cb060

Créer une version japonaise du corpus text8 et apprendre les expressions distribuées https://hironsan.hatenablog.com/entry/japanese-text8-corpus

Comment coller une animation Gif capturée sur un Mac dans un article Qiita https://qiita.com/ryosukes/items/b5dd0fac1a059caffbf0

Recommended Posts

Présentation du potentiel du nuage de points de Plotly avec des exemples pratiques
Gérez le chevauchement lors du dessin d'un diagramme de dispersion avec une grande quantité de données (Matplotlib, Pandas, Datashader)
[Parlez de la structure de dessin de plotly] Visualisation dynamique avec plotly [python]
Version pratique de l'automatisation des tests des applications Flutter avec Appium (Python)
Application de graphiques avec des curseurs
[Exemple d'amélioration de Python] Apprentissage de Python avec Codecademy
Vérifier l'existence du fichier avec python
La troisième nuit de la boucle avec pour
La deuxième nuit de la boucle avec pour
Compter le nombre de caractères avec écho
Comprendre les images de diverses opérations matricielles utilisées dans Keras (Tensorflow) avec des exemples