최근 공개한 일본의 🦠코로나 바이러스 정보 Web API에 📈 감염자수 예측 API를 추가한 이야기


최근 공개한 기사 「 🇯🇵 일본을 대상으로 한 🦠 코로나 바이러스 정보 Web API가 없었기 때문에 2 일간 공개 한 이야기 」로 소개해 주신 「 covid19-japan-web-api 」 는 현재 많은 분으로부터 이용 보고를 받고 있습니다.

실제로 API를 이용 보고를 받은 프로젝트는 이쪽 「 Project using this API 」에 게재하고 있습니다.
(여기에 있는 프로젝트 이외에도 더 많은 분들이 이용하고 있는 것 같습니다. API를 이용하고 있는 분에서 연락 또는 풀 요청을 주시면 여기에 게재하겠습니다.)

어느 정도의 수요가 있는 것도 알았으므로, 매일 밤에 밤에 업데이트를 하고 있습니다. 이번에는 그 업데이트 속에서 감염자 예측 API를 추가한 이야기를 하려고 합니다.

🚀 저장소: htps : // 기주 b. 코 m / 료 마 / 코 ゃ d19

실현 방법



우선 전회의 기사에서도 같은 것을 썼습니다만 처음에는 심플하게 스몰에 빨리 공개한다고 하는 스탠스로 실시했습니다. 거기서 이번은 빨리 시험할 것 같다고 생각해, 이 기사 「 도쿄에서의 감염 폭발을 훼손 예측 」의 전제를 일부 이용했습니다. (여담입니다만 이쪽의 기사의 문장은 말 하나하나의 선택에 센스를 느낍니다)
이용한 수식은 이하와 같은 2개의 파라미터를 가지는 지수 함수(정수배와 누승)입니다. 세세한 수식의 설명은 상기의 기사에서 설명하고 있으므로 생략합니다.
y = ae^{bx}

지수 함수에 있어서의 2개의 파라미터를 추정하고 싶기 때문에 이번은 scipy의 curve_fit(곡선 근사)를 이용합니다.
또, 추정에 이용하는 데이터는 지난 28일간(잠복기간의 2배)의 감염자수입니다. 물론, 더 고려해야 할 점은 생각하면 많이 있다고 생각합니다만, 이번은 이 내용으로 예측해 갑니다.

데이터 소스



유지가 공개해 주는 데이터입니다. 대상은 일본 전국의 감염자 수 데이터를 이용합니다.
* htps : // 기주 b. 코 m / sw 소이 에 / 2019 - 코 v 짱 /

구현


import pandas as pd 
from scipy.optimize import curve_fit

DOMESTIC_DAILY_REPORT = 'data/2019-ncov-japan/Data/domesticDailyReport.csv'
DAY_RANGE = 28


def predict(data_y):
    array_x = range(1, DAY_RANGE + 1)
    array_y = data_y[len(data_y) - DAY_RANGE: len(data_y)]
    return curve_fit(nonlinear_func, array_x, array_y)                                                                                                                                                                                        

def nonlinear_func(x, a, b): 
    return b * np.exp(a*x)


total_df = pd.read_csv(DOMESTIC_DAILY_REPORT,
                       na_values='0',
                       encoding='utf-8').fillna(0).astype(int)
param, _ = predict(total_df['positive'].array)

# このコードでは1日先だけの予測ですが、実際は30日先までの予測を出力しています。
result = nonlinear_func(DAY_RANGE + 1, param[0], param[1]) 

매일 감염자 수를 예측하고 싶기 때문에 이 스크립트를 GitHub Action의 schedule에 포함시킵니다.



이전 기사 「 🇯🇵 일본을 대상으로 한 🦠 코로나 바이러스 정보 Web API가 없었기 때문에 2 일간 공개 한 이야기 」로 기술한 그림에 3번의 프로세스가 추가되었습니다.

감염자 수 예측 API



2020/4/16일 시점에서 30일 앞까지의 일본 전국 합계의 감염자수 예측 데이터를 취득할 수 있습니다. 5월 중순에는 10만명 이상의 감염자가 될 예측입니다.
※크루즈선, 차타, 검역 직원은 예측 데이터에 포함하지 않습니다.

끝점 : htps : //코ゔぃd19ー 그럼 판우우 b-아피. 의 w. sh/아피/v1/이었던 l? p ぢct = t 루에
[
  {
    "date": 20200417,
    "positive": 9761.573359691847,
    "death": 129.69262383884256
  },
  {
    "date": 20200418,
    "positive": 10700.879339710007,
    "death": 136.29822133282812
  },
  {
    "date": 20200419,
    "positive": 11730.569901351153,
    "death": 143.24025984374282
  },
...
...
  {
    "date": 20200513,
    "positive": 106392.39467139919,
    "death": 471.9141314262626
  },
  {
    "date": 20200514,
    "positive": 116629.98740987679,
    "death": 495.94999955550384
  },
  {
    "date": 20200515,
    "positive": 127852.69102402021,
    "death": 521.2100797145482
  }
]

기타 기존 API


  • Prefectures
  • Total
  • Total History
  • Positives
  • Positives Statistics

  • 요약



    이번은 일본의 코로나 바이러스 정보 WebAPI에 감염자수 예측 API를 추가했습니다.
    예측 모델 자체는 어색하기 때문에 진지하게 한다면 고려해야 할 점은 많이 있다고 생각합니다만, 이것은 이것으로 하나의 지표가 된다고 생각하고 있습니다. 또, 오픈 소스이므로 컨셉을 보여주는 것에 의해 찬동해 주는 쪽이 어떠한 형태로 서포트해 준다고 생각하는 행동입니다.

    하고 싶은 것은 많습니다만 좀처럼 손이 돌고 있지 않은 상태이므로, 풀 리퀘스트등은 언제라도 환영하고 있습니다.
    🚀 저장소: htps : // 기주 b. 코 m / 료 마 / 코 ゃ d19

    좋은 웹페이지 즐겨찾기