[PYTHON] [Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques

Jusqu'à la dernière fois

Jusqu'à la dernière fois

Utilisez Deep Learning pour prévoir la météo à partir d'images météorologiques 1 Utilisez Deep Learning pour prévoir la météo à partir d'images météorologiques 2

En résumé,

Météo Precision Recall F-Score
pluie 0.54 0.67 0.6
Bien 0.83 0.74 0.78
moyenne 0.74 0.72 0.72

Cette histoire

Cette fois, je voudrais améliorer la précision en améliorant le modèle, les données des enseignants et les variables explicatives.

En particulier

Ce sera là.

une analyse

Classification trivalente

Jusqu'à présent, c'était une classification binaire de «fin» et de «pluie». Cependant, cela contient une grande quantité de "trouble", qui était l'un des facteurs qui réduisaient la précision. Par conséquent, je vais simplement l'essayer comme une classification ternaire incluant "nuageux".

Les conditions pour générer des données sur les enseignants sont les suivantes.

flag = []
for tk in tenki_list:
	if "pluie" in tk:
		flag.append(0)
	elif "Bien" in tk:
		flag.append(2)
	else:
		flag.append(1)

La pluie est la priorité absolue, suivie du beau temps et du dernier nuage restant.

Le résultat du test est le suivant. Chaque probabilité est la probabilité moyenne du temps. Trié par ordre décroissant de probabilité de pluie.

Météo Probabilité de pluie Probabilité nuageuse Probabilité claire
Parfois ensoleillé après de fortes pluies, accompagné de déversements 98% 0% 2%
Nuageux après la pluie, accompagné de grêle 97% 0% 3%
pluie 96% 1% 3%
forte pluie 95% 1% 4%
Pluie temporaire ensoleillée 95% 0% 5%
Nuageux et parfois ensoleillé après une pluie temporaire 91% 1% 8%
Parfois ensoleillé après nuageux 90% 3% 6%
Pluie Parfois ensoleillé Brouillard temporaire Pluie 89% 2% 10%
Nuageux temporairement après de fortes pluies 80% 3% 17%
Nuageux et parfois pluvieux 77% 4% 19%
Nuageux et parfois ensoleillé avec pluie temporaire et tonnerre 74% 5% 21%
Temps nuageux après la pluie 72% 6% 22%
Ensoleillé après la pluie 72% 4% 24%
Nuageux pluie temporaire 71% 5% 24%
Nuageux après la pluie 71% 3% 26%
Nuageux parfois pluie 70% 5% 25%
Parfois nuageux après la pluie 67% 3% 29%
Pluie nuageuse temporaire 63% 7% 30%
Nuageux après ensoleillé 63% 4% 33%
Pluvieux et parfois nuageux 62% 8% 30%
Pluie parfois nuageux 61% 4% 35%
Ensoleillé et parfois nuageux 60% 3% 37%
Nuageux et parfois ensoleillé 59% 5% 36%
Pluie après nuageux 57% 7% 36%
Pluie temporaire après beau temps, accompagnée de tonnerre 52% 11% 36%
Amende temporaire après nuageux 51% 6% 44%
Parfois nuageux après une pluie temporaire 50% 7% 44%
Pluie temporaire après nuageux 49% 10% 41%
Nuageux 45% 8% 47%
Nuage léger 42% 7% 52%
Légèrement nuageux temporaire clair 38% 10% 52%
Ensoleillé Temporairement nuageux 38% 8% 55%
Parfois ensoleillé après de légers nuages 38% 11% 52%
Légèrement nuageux après le beau temps 34% 9% 57%
Légèrement nuageux et parfois ensoleillé 34% 8% 58%
Nuageux 33% 7% 60%
Partiellement nuageux 33% 9% 58%
Nuageux et ensoleillé après la pluie 31% 13% 56%
Bien 30% 9% 61%
Ensoleillé et temporairement nuageux 30% 8% 62%
Légèrement nuageux après beau temps 28% 11% 61%
Parfois nuageux après le beau temps 27% 8% 65%
Ensoleillé 25% 7% 68%
Ensoleillé après nuageux 22% 10% 68%
Parfois pluie après nuageux 20% 8% 72%
Nuageux et ensoleillé après une pluie temporaire 20% 11% 70%
Nuageux et parfois ensoleillé puis pluie temporaire 18% 10% 73%
Après une pluie ensoleillée parfois nuageux 4% 5% 91%

En conséquence, aucune nébulosité n'est prévue. (sérieusement)

Puisque les données d'enseignant dans l'expression conditionnelle ci-dessus sont les suivantes, je pense qu'il est très difficile d'estimer la nébulosité.

Météo Pourcentage
pluie 33%
Nuageux 7%
Bien 59%

Avec cela, on a l'impression de ne jouer que le "nuageux" évident. Cependant, par exemple, si vous introduisez d'abord la condition que «la nébulosité est incluse», le nombre de pluie et de beau temps diminuera trop, et ce sera inutile. Hmmm difficile.

Cependant, lorsque l'ASC moyenne est calculée uniquement pour «pluie» et «fine», elle est de 0,720, et il semble que la précision de ces deux se soit améliorée. La pluie et les statistiques claires sont les suivantes.

Météo precision recall f1-score
pluie 0.60 0.76 0.67
Bien 0.69 0.71 0.70
moyenne 0.65 0.74 0.69

Apparemment, la précision de l'estimation de «pluie» s'est améliorée.

Augmentation d'époque

La dernière fois, je l'ai fait avec Epoch = 50, mais cette fois, je définirai Epoch sur 100. Les données de l'enseignant sont les mêmes que la dernière fois et sont une classification binaire de «pluie» et «bien».

L'AUC moyenne était de 0,724, ce qui est plus précis que les classifications précédentes et ternaires. (Epoque importante)

Les statistiques sont les suivantes.

Météo precision recall f1-score
pluie 0.53 0.77 0.63
Bien 0.86 0.68 0.76
moyenne 0.76 0.71 0.72

On a l'impression que Precision est en place.

Ajout du traitement des variables explicatives (image)

Jusqu'à présent, les variables explicatives ont été utilisées comme données d'image de la veille pour 3 canaux. Cependant, les données de l'image cartographique d'origine sont des informations communes à tout moment et qui n'ont aucune signification dans la classification. Par conséquent, nous envisagerons d'incorporer des informations «modifiées» en prenant la différence par rapport à la veille.

Écrit en code, cela ressemble à ceci:

    """Convertir en série différentielle"""
    img_mat_new = np.zeros((img_mat.shape[0],3*2,img_mat.shape[2],img_mat.shape[3]),dtype=np.float32)
    img_mat_new = img_mat_new[0:-1] #Réduisez de un
    for l in range(1,len(img_mat)):
        """Différence"""
        img_mat_new[l-1,0,:,:] = img_mat[l-1,0,:,:] - img_mat[l,0,:,:]
        img_mat_new[l-1,1,:,:] = img_mat[l-1,1,:,:] - img_mat[l,1,:,:]
        img_mat_new[l-1,2,:,:] = img_mat[l-1,2,:,:] - img_mat[l,2,:,:]
        """Ce jour là"""
        img_mat_new[l-1,3,:,:] = img_mat[l,0,:,:]
        img_mat_new[l-1,4,:,:] = img_mat[l,1,:,:]
        img_mat_new[l-1,5,:,:] = img_mat[l,2,:,:]

N'oubliez pas de réduire d'un jour les données des enseignants.

Dans cet état, définissez le canal d'entrée sur 6 et introduisez-le dans le modèle.

Ensuite, l'ASC moyenne tombe à 0,658. (C'est tout)

Les statistiques sont les suivantes.

Météo precision recall f1-score
pluie 0.57 0.48 0.52
Bien 0.78 0.83 0.8
moyenne 0.71 0.72 0.71

La précision du beau temps s'est améliorée, mais la pluie n'est pas bonne. Eh bien difficile.

Essayez de changer les données d'image

Que faire si je change les données d'image en un autre type? Jusqu'à présent, la résolution était de 640x480, mais changeons-la en une image haute résolution de 3000x3000. Cependant, le problème est l'image ** visible **. (C'est-à-dire la lumière du soleil, influencée par les saisons)

L'image ressemblera à celle ci-dessous.

jpn.14123117.jpg

Source: Fourni par l'Université de Kochi, Université de Tokyo, Agence météorologique

Wow, il y a une tache noire. .. ..

Eh bien, c'est un essai.

L'AUC moyenne est de 0,675, ce qui est inférieur à la valeur conventionnelle.

Les statistiques sont les suivantes.

Météo precision recall f1-score
pluie 0.69 0.45 0.54
Bien 0.77 0.9 0.83
moyenne 0.75 0.76 0.74

En regardant FScore, la précision est améliorée. Puisque l'AUC est de 0,79, la précision du beau temps s'est améliorée, mais la précision de la pluie semble avoir légèrement diminué.

résultat

J'ai essayé diverses choses,

C'est devenu comme.

Est-ce un bon modèle pour augmenter Epoch, en faire une classification ternaire (je veux améliorer la précision de la pluie) et en faire une image visible (je veux améliorer la précision du beau temps)?

Je veux viser AUC 0.8 pour le moment.

Puisqu'il existe des éléments de séries chronologiques, est-il plus précis de l'étendre à RNN? (Je dois étudier)

Recommended Posts

[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Apprendre en profondeur à partir des bases mathématiques Partie 2 (pendant la fréquentation)
J'ai essayé d'implémenter Perceptron Part 1 [Deep Learning from scratch]
Apprentissage amélioré pour apprendre de zéro à profond
Alignement d'image: du SIFT au deep learning
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Obtenez des données de Poloniex, un bureau de change virtuel, via l'API et utilisez le Deep Learning pour prédire le prix du lendemain.
À propos de l'ordre d'apprentissage des langages de programmation (de débutant à intermédiaire) Partie 2
Les débutants du Deep Learning ont essayé les prévisions météorologiques à partir d'images satellitaires météorologiques à l'aide de Keras
Tweet les prévisions météo avec le bot Partie 2
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
POST des images depuis ESP32-CAM (MicroPython) vers le serveur
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow) - Partie 2
Apprentissage profond à partir de zéro
Créer un ensemble de données d'images à utiliser pour la formation
[Deep Learning from scratch] J'ai implémenté la couche Affine
Je voulais utiliser la bibliothèque Python de MATLAB
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
Apprentissage profond à partir de zéro 1 à 3 chapitres
Papier: Papier d'apprentissage automatique qui reproduit des images dans le cerveau, (reconstruction d'image profonde à partir de l'activité cérébrale humaine)
Comment utiliser le générateur
[Apprentissage en profondeur] Découvrez comment utiliser chaque fonction du réseau neuronal convolutif [DW jour 3]
[Deep Learning from scratch] J'ai essayé d'expliquer la confirmation du gradient d'une manière facile à comprendre.
[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
(Deep learning) J'ai collecté des images de l'API Flickr et essayé de discriminer en transférant l'apprentissage avec VGG16
Introduction au Deep Learning ~ Règles d'apprentissage ~
J'ai capturé le projet Toho avec Deep Learning ... je le voulais.
Apprentissage par renforcement profond 1 Introduction au renforcement de l'apprentissage
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib
Comment utiliser le décorateur
Introduction au Deep Learning ~ Rétropropagation ~
[Deep Learning from scratch] À propos des couches requises pour implémenter le traitement de rétropropagation dans un réseau neuronal
Chapitre 1 Introduction à Python Découpez uniquement les bons points de Deeplearning à partir de zéro
[Apprentissage automatique] Comprenez à partir des mathématiques pourquoi le coefficient de corrélation varie de -1 à 1.
Version Lua Apprentissage profond à partir de zéro Partie 6 [Traitement d'inférence de réseau neuronal]
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
Comment utiliser la fonction zip
Comment utiliser le module optparse
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Comment utiliser SWIG de WAF
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Introduction à l'apprentissage en profondeur ~ Approximation des fonctions ~
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Apprentissage profond à partir de zéro (calcul des coûts)
Apprentissage profond pour démarrer sans GPU
Introduction à l'apprentissage profond ~ Préparation au codage ~
Publier une image de Python sur Tumblr
Utilisez l'API Flickr de Python
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro