Avez-vous déjà entendu parler de mots tels que la dépression ouest haute-est et la répartition de la pression de type hivernal? Il existe plusieurs modèles de distribution de pression près du Japon, et la distribution de pression de type hivernal appelée West High East Low est probablement la plus connue (voir la figure ci-dessous). Il existe plusieurs autres types, comme une distribution de pression de type été couverte par la haute pression du Pacifique. Dans cet article, je vais essayer de classer ce modèle par apprentissage non supervisé. (D'après les actualités météorologiques)
J'ai fait les trois choses suivantes cette fois.
L'image satellite a été acquise sur le site Web du musée météorologique d'Enamiyama. C'est parce que c'était ce site qui était lourd à télécharger des données de ligne et qui semblait bon à gratter avec des données bien traitées. À l'origine, il semble approprié d'acheter auprès de HP of Meteorological Business Support Center. Je vous remercie. Le code source n'est pas répertorié ici, mais est répertorié dans github.
L'image que j'ai utilisée est une image de 12:00 (JST) près du Japon, et l'image suivante (854 x 480px).
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from PIL import Image
import glob
from tqdm import tqdm
from os import makedirs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, silhouette_samples
x=np.empty((0,240*427))
paths=glob.glob("pictures/*.jpg ")
for path in tqdm(paths):
img=Image.open(path)
img = img.convert('L')
img=img.resize((int(img.width/2), int(img.height/2)))
x=np.append(x,np.array(img).reshape(1,-1),axis=0)
Lisez l'image, remodelez-la en une seule ligne, puis insérez-la dans le tableau numpy. Il a fallu beaucoup de temps pour que la qualité de l'image soit bonne, alors je l'ai rendue grésque et l'ai divisée par deux.
distortions = [] #Méthode du coude (trouver le nombre optimal de grappes)
for k in tqdm(range(1, 20)):
kmeans = KMeans(n_clusters=k, n_init=10, max_iter=100)
kmeans.fit(x)
distortions.append(kmeans.inertia_)
fig = plt.figure(figsize=(12, 8))
plt.xticks(range(1, 20))
plt.plot(range(1, 20), distortions)
plt.savefig("elbow.jpg ")
plt.close()
Le nombre optimal de grappes a été calculé par la méthode du coude. Il a fallu environ 10 minutes pour le faire à 20, donc je pense qu'environ 10 sont suffisantes. Le résultat est illustré dans la figure ci-dessous. Je ne savais pas exactement combien seraient bons, mais cette fois j'ai décidé de le faire avec 4.
k_means = KMeans(n_clusters=4).fit(x)
y_pred = k_means.predict(x)
print(k_means.labels_)
print(pd.Series(k_means.labels_, name='cluster_number').value_counts(sort=False))
out=pd.DataFrame()
out["picture"]=paths
out["classnumber"]=y_pred
out["date"]=pd.to_datetime(out["picture"].str.split("\\",expand=True).iloc[:,1].str.split(".",expand=True).iloc[:,0])
out.to_csv("out.csv")
Le nombre d'éléments par cluster était de 139,61,68,98. C'était divisé en bons sentiments, donc je peux m'y attendre.
#Enregistrer par classe
for i in range(4):
makedirs(str(i)+"_pictures", exist_ok=True)
for i in out.itertuples():
img=Image.open(i.picture)
img.save(str(i.classnumber)+"_"+i.picture)
for i in range(4):
out["month"]=out["date"].dt.month
sns.countplot("month",data=out[out["classnumber"]==i])
plt.title(i)
plt.savefig("Distribution mensuelle"+str(i))
plt.close()
Sauvegardons chaque classe séparément et voyons la distribution mensuelle et les images concrètes de chaque classe.
On a l'impression qu'il y en a beaucoup en hiver et peu en été. S'agit-il d'une distribution de pression de type hivernal? Il semble étrange que cela puisse être vu même en été, même si le nombre est petit.
Les images qui appartiennent à ce cluster sont les suivantes, par exemple.
2020/1/13 | 2020/1/19 |
---|---|
Il s'agissait d'une carte météorologique avec une distribution de basse pression typique ouest haute-est et un vent froid soufflant du nord-ouest, provoquant des nuages au-dessus de l'archipel japonais.
En outre, les chiffres appartenant à cette grappe pendant la saison non hivernale étaient indiqués dans la figure ci-dessous.
2020/6/26 | 2019/10/26 |
---|---|
L'atmosphère est qu'il y a des nuages sur le continent et sur le Japon, et il n'y a pas de nuages au-dessus de l'océan Pacifique. Bien que les types de nuages soient différents, je pense que l'atmosphère de l'emplacement du nuage est certainement similaire.
Il augmente en avril et en novembre. Je ne savais pas ce qu'ils avaient en commun avec ce graphique seul.
Les images qui appartiennent à ce cluster sont les suivantes, par exemple.
2019/11/2 | 2020/4/29 |
---|---|
Il ne semble pas avoir de fonction de distribution de pression claire. Comme caractéristique de l'image, la région autour du Japon était ensoleillée et il y avait de nombreuses images avec des nuages diagonaux dans la direction sud-est du Japon. Certains de ces nuages se sont formés autour du bord de la haute pression du Pacifique selon la saison, mais j'estime que des nuages similaires se forment par hasard. Au contraire, ce cluster avait une forte impression comme le reste des autres clusters.
C'est souvent le cas pendant la saison des pluies. Est-ce la répartition de la pression quand il y a un front de saison des pluies? De plus, il semble que personne n'ait été vu en février, août et septembre.
2020/6/28 | 2020/7/4 |
---|---|
Comme prévu, bon nombre de ces groupes ont montré le front de la saison des pluies. C'est une saison des pluies qui n'apparaît pas dans les quatre catégories printemps, été, automne et hiver, mais je pense qu'il a été démontré que ses caractéristiques météorologiques sont claires.
Les images des autres saisons appartenant à ce groupe étaient les suivantes.
2019/10/20 | 2020/3/19 |
---|---|
Des nuages de forme similaire à celle de la ligne de front se répandent sur l'archipel japonais, et il est compréhensible qu'ils aient été classés dans ce cluster.
Cela montre un été bouleversant. Il semble représenter la répartition de la pression de type estival surplombant la haute pression du Pacifique.
En regardant les images réellement classées dans ce groupe, c'était une image pleine de sentiment de type estival comme suit.
2019/7/29 | 2019/8/21 |
---|---|
De plus, de nombreuses images d'autres saisons avaient des jours ensoleillés plus larges.
2019/10/14 | 2019/11/1 |
---|---|
À partir des résultats d'analyse ci-dessus, il a été possible de classer la tendance générale de la distribution de la pression par analyse en grappes et d'interpréter celles qui s'en écartent. Cependant, comme l'image satellite ne représente pas directement la pression, il n'est pas possible de classer directement la distribution de pression, et les amas sont divisés en fonction de la distribution des nuages, donc si les formes des nuages sont similaires, ce sera incorrect. Il sera classé. Afin de classer la distribution de la pression, il est possible de réfléchir à la manière de capturer non seulement les nuages, mais aussi la pression. Code exécuté cette fois (github)
Recommended Posts