[PYTHON] Tokyo Corona: faites une prédiction simple à partir de données ouvertes avec la fonction exponentielle curve_fit

L'infection Corona est répandue. Si aucune mesure n'est prise (ou n'a aucun effet), le nombre de personnes infectées augmentera généralement selon la fonction exponentielle.

Le nombre réel d'infections est annoncé quotidiennement sur le site Tokyo Corona, mais aucune prévision n'a été faite.

La fonction exponentielle curve_fit est utilisée pour calculer la future valeur prédite et dessiner le graphique ici. (Bien sûr, je ne veux pas que le résultat soit aussi bon que possible, et j'espère sincèrement que les mesures seront prises pour converger le plus tôt possible.

Eh bien, c'est mauvais. Intuition qui correspond assez bien à la fonction exponentielle. Le coefficient de décision sera calculé séparément. TokyoCorona_20200403.png

Les données proviennent du site officiel. https://stopcovid19.metro.tokyo.lg.jp/

Il semble qu'il soit généralement mis à jour la nuit, mais c'est une condition préalable pour dessiner un graphique le lendemain. Le nombre du lundi a tendance à être beaucoup plus petit que le nombre réel car il y a de nombreux endroits où l'agence d'inspection est fermée le dimanche précédent. Il peut être supprimé en tant que facteur périodique, mais ici je vais le dessiner tel quel.

import pandas as pd
from pathlib import Path
from datetime import datetime
BASEDIR = Path('.')
FILE_PATH = 'https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv'
df = pd.read_csv(str(FILE_PATH))
#Période de prévision
TO_PERIODS = 7

#Générer diverses choses pour le dessin graphique
target_columns = ['Publié_Date','patient_Âge']
df_select = df[target_columns]
list_now = list(df_select.groupby('Publié_Date').count().index)
today = datetime.today()
today.strftime('%Y-%m-%d')

list_to = list(pd.date_range(today.strftime('%Y-%m-%d'), periods=TO_PERIODS, freq='D').strftime('%Y-%m-%d'))
list_total = list_now + list_to

Calculé comme une prémisse d'ajustement de fonction exponentielle à l'aide de curve_fit

from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt

#Définition de l'expression approchée
def nonlinear_fit(x, a, b):
    return a * x ** b

#Générer une fois des données temporaires sur l'axe des x
array_now_x = np.linspace(0, len(list_now)-1, len(list_now))

#Courbe assumant une fonction exponentielle_exécution en forme
param, cov = curve_fit(nonlinear_fit, array_now_x, array_now_y,maxfev=1000)

Calculer la valeur future avec les paramètres obtenus par le traitement de l'ajustement de fonction exponentielle

list_total_y = []
for num, values in enumerate(list_total):
    list_total_y.append(nonlinear_fit(num, param[0], param[1]))

#Calculez le nombre de personnes infectées chaque jour à partir des données publiées
array_now_y = df_select.groupby('Publié_Date').count()['patient_Âge'].values

Dessinez un graphique.

import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
sns.set_style('whitegrid')

fig, ax = plt.subplots(1, 1, figsize=(15, 10))
ax.bar(list_total, list_total_y, color='blue')
ax.bar(list_now, array_now_y, color='red',alpha=0.75)
plt.xticks(rotation=90)
plt.show()

Recommended Posts

Tokyo Corona: faites une prédiction simple à partir de données ouvertes avec la fonction exponentielle curve_fit
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Une solution de contournement simple pour que les robots essaient de publier des tweets avec le même contenu
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Essayez d'utiliser les données ouvertes de COVID-19 de Yokohama / Tokyo / Osaka
J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]
Faisons un outil de veille de commande avec python
Créer une fonction pour décrire les polices japonaises avec OpenCV
Essayez de gratter les données COVID-19 Tokyo avec Python
[Linux] Copie des données de Linux vers Windows avec un script shell
Comment faire un simple jeu Flappy Bird avec Pygame
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Les utilisateurs de Rails essaient de créer un moteur de blog simple avec Django
Essayez de créer un type de service Web avec un langage de balisage 3D
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Du «dessin» à «l'écriture» du diagramme de configuration: essayez de dessiner le diagramme de configuration AWS avec des diagrammes
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
Comment créer une fonction récursive
[Python] Faire de la fonction une fonction lambda
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
[Python] Explique comment utiliser la fonction range avec un exemple concret
Essayez de créer un logiciel de capture aussi précis que possible avec python (2)
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (théorie)
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Extrayez la table de données d'Azure SQL Server avec pyodbc et essayez de la rendre numpy array / pandas dataframe
Faisons un noyau jupyter
Un simple script IDAPython pour nommer une fonction
Faisons un langage simple avec PLY 1
Essayez de convertir en données ordonnées avec les pandas
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
Essayez d'embellir avec Talking Head Anime à partir d'une seule image [préparation python]
Créons une application Web de conversion A vers B avec Flask! De zéro ...
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (résultat de l'exécution)
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for