Коронавирусное заболевание (COVID-19) – это инфекционное заболевание, вызванное недавно обнаруженным коронавирусом. Вирус появился в ноябре 2019 года в Ухане, Китай, но с тех пор распространился из своего эпицентра на большинство стран мира. Вирус отличается от своего предшественника SARS значительно более высоким уровнем заражения и смертности. Медицинские сообщества по всему миру, фармацевтические компании и даже специалисты по даннымдобросовестно работают, чтобы обнаружить закономерности, связанные с анатомией вируса, способами заражения, причинами неравномерного распространения/скорости заражения и факторами высокой смертности. .

Несмотря на то, что теперь многие вещи коллективно согласованы, крайне неравномерное количество случаев заболевания и смертей по всему миру ставит под вопрос, действительно ли мы понимаем вирус в той мере, в какой должны. Кроме того, сообщество специалистов по данным в основном сосредотачивается на связанных функциях, но оставляет аспекты, которые могут иметь влияние, но не настолько интуитивно понятны. Например, влияют ли специфические для страны факторы, такие как ВВП, уровень безработицы, модели потребления продуктов питания, беженцы, городское население, количество абонентов интернета/мобильной связи и т. д., что делает конкретную страну более подверженной смертельным исходам, чем другие. Хотя мы знаем, что возраст является фактором, но могут ли быть скрытые причины, которые не очень интуитивны, но все же связаны с серьезностью воздействия на конкретные страны.

Я придерживался другой точки зрения и построил модель, которая пытается обнаружить и изучить, казалось бы, несвязанные функции и оценить их важность для числа случаев заболевания коронавирусом и смертей по всему миру.

Ввспышке Covid-19, часть 1я создам простую модель для анализа того, какие функции являются доминирующими и имеют большее значение для числа случаев заболевания коронавирусом и смертей. Акцент будет сделан исключительно на важности, а не на серьезности или причине отношения. Интенсивность или полярность будут рассмотрены в Части 2. Кроме того, характеристики будут основываться исключительно на характеристиках страны, которые периодически оцениваются мировыми органами. Теперь перейдем непосредственно к модели.

Я использую Python в качестве основного языка для этого анализа и начну с импорта всех необходимых стандартных и специальных библиотек. Список библиотек включает стандартный импорт, импорт статистики и импорт графиков. Я также добавил регулярные выражения и библиотеку даты и времени для определенных обновлений данных.

#Standard Import
import pandas as pd
import numpy as np
from pandas import DataFrame, Series
from numpy.random import randn
 
#Stats Import
from scipy import stats
import sklearn
from sklearn.datasets import load_boston#Plots Import
import matplotlib as mpl
from matplotlib import pyplot as plt
import seaborn as sns
import plotly as pl
from plotly.offline import download_plotlyjs,init_notebook_mode,plot,iplot
init_notebook_mode(connected=True)
import cufflinks as cf
cf.go_offline()#Other Imports
import re
import datetime

Сначала я получу последние данные о случаях коронавируса с официального веб-сайта Европейского центра профилактики и контроля заболеваний.



«Домашняя страница | Европейский центр профилактики и контроля заболеваний
Вспышка COVID-19 быстро развивается, и правительствам всех стран настоятельно рекомендуется принять меры по сдерживанию…www.ecdc.europa. Евросоюз"



Мы используем метод чтения csv, доступный в библиотеке Pandas, для чтения ежедневных случаев заболевания коронавирусом и смертей. В этом CSV-файле содержится ежедневный подсчет случаев заболевания коронавирусом и смертей во всех странах мира.

url = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv"
Casesdf = pd.read_csv(url, encoding='ISO-8859-1')
Casesdf = Casesdf.rename(columns={'countriesAndTerritories': 'Country'})
Casesdf = Casesdf.drop('popData2018', axis=1)
Casesdf['dateRep'] = pd.to_datetime(Casesdf['dateRep'])def replaceus(country):
      str = re.sub(r'[\W_]',' ', country)
      return(str)Casesdf['CountryNew'] = Casesdf['Country'].apply(replaceus)
Casesdf = Casesdf.drop('Country', axis=1)
Casesdf = Casesdf.rename(columns={'CountryNew':'Country'})

Далее я исследую статистические данные ООН по странам в отношении их площади, населения, соотношения полов, ВВП, экономических показателей, показателей занятости, торговли, индекса производства продуктов питания, возраста, образования, использования мобильных устройств/интернета, количества. виды, находящиеся под угрозой исчезновения, лесные массивы и т. д. Я сосредоточусь только на 50 характеристиках, которые, как я обнаружил, оцениваются. Я называю это World DataFrame.



Далее я также получаю данные ООН о потреблении мяса по странам по типу (баранина, птица, свинина, говядина, всего и другие). Я хочу наблюдать, влияют ли модели потребления мяса в конкретных странах на количество случаев заболевания или смертей.

url = "https://github.com/vinayakbhakta9/Coronavirus/blob/master/Covid19CasesNew.xlsx?raw=true"
Worlddf = pd.read_excel(url,sheet_name='World')
Worlddf.info()url = "https://github.com/vinayakbhakta9/Coronavirus/blob/master/WorldPoultry.xlsx?raw=true"
Meetdf = pd.read_excel(url,sheet_name='Sheet1')
Meetdf.info()

Следующая серия шагов заключается в обновлении базы данных World Data Frame атрибутами, связанными со случаями, такими как возраст (продолжительность), количество случаев и количество смертей, а также всеми атрибутами характеристик потребления мяса.

#Calculating Age of the virus in the respective country and rank orders then picks rank 1
CasedfFil = Casesdf[Casesdf['cases']>0]
Cdfgr1 = CasedfFil.groupby('Country')
CasedfFil['Rn'] = Cdfgr1['dateRep'].rank(method='min')
CasedfFil = CasedfFil[CasedfFil['Rn']==1]#age calculation
def today_date():
    date=datetime.datetime.now().date()
    date=pd.to_datetime(date)
    return dateCasedfFil['Today'] = today_date()
CasedfFil['Diff'] = CasedfFil['Today'] - CasedfFil['dateRep']#joining with the world df
CasedfFil = CasedfFil[['Country', 'Diff']]
Worlddf = Worlddf.join(CasedfFil.set_index('Country'), on='Country')
Worlddf['Age'] = pd.to_numeric(Worlddf['Diff'].dt.days, downcast='integer')
Worlddf = Worlddf.drop('Diff', axis=1)#Adding Count of Cases and Count of deaths in Worlf df
Casedfcd = Casesdf.groupby(['Country']).sum()
Casedfcd = Casedfcd.drop(['day','month','year'], axis=1)
Worlddf = Worlddf.join(Casedfcd, on='Country')#joining with the meet df
Worlddf = Worlddf.join(Meetdf.set_index('Entity'), on='Country')

Для этого исследования используется окончательный World DataFrame, который теперь содержит 59 атрибутов. Поскольку источник данных является надежным, данные можно считать чистыми и обработанными. Единственными двумя задачами очистки, которые делают данные полезными для моделирования, являются удаление нулей и очистка бесконечностей, которые можно выполнить следующим образом:-

Worlddf.replace([np.inf, -np.inf], np.nan, inplace=True)
Worlddf.fillna(0, inplace=True)

В следующем разделе я использую технику ML/AI. Я использую случайный лес, который является самым популярным методом машинного обучения благодаря его относительно хорошей точности, надежности и простоте использования. Я использую метод среднего уменьшения примеси выбора признаков, где каждый узел в деревьях решений является условием для одного признака, предназначенным для разделения набора данных на два, чтобы одинаковые значения ответов оказывались в одном и том же наборе. Мера, на основе которой выбирается (локально) оптимальное условие, называется примесью.

Я дважды запускаю модель случайного леса с целевой переменной в виде количества смертей, чтобы увидеть, какие функции имеют значение для уровня смертности, а затем во втором запуске я сохраняю целевую переменную в виде числа случаев. Приведенный ниже код запускает модель с целевой переменной в виде количества смертей.

from sklearn.ensemble import RandomForestRegressor
dfn=Worlddf.drop([‘Country’,’Region’,’cases’,’deaths’], axis=1)
lsd=Worlddf[‘deaths’]
lsd=pd.get_dummies(lsd)
model = RandomForestRegressor(random_state=1, max_depth=10)
dfn=pd.get_dummies(dfn)
model.fit(dfn,lsd)
features = dfn.columns
importances = model.feature_importances_
indices = np.argsort(importances)[-18:] # top 10 features
plt.title(‘Feature Importances by Deaths’)
plt.barh(range(len(indices)), importances[indices], color=’g’, align=’center’)
plt.yticks(range(len(indices)), [features[i] for i in indices])
plt.xlabel(‘Relative Importance’)
plt.show()
compdf = pd.DataFrame( {“Column”: dfn.columns, “importance”: importances}).sort_values(‘importance’, ascending=False)

Исходя из приведенной выше модели, мы получаем важность 18 основных признаков, имеющих отношение к подсчету смертей.

В списке 18 лучших такие функции, как Количество врачей на 1000 пациентов, ожидаемая продолжительность жизни, мужчины, довольно интуитивно понятныи понимаются коллективно, но другие, которые кажущиеся не связанными, следующие. Я попытался связать эту функцию с предполагаемым объяснением следующим образом:

• ВВП — экономическая деятельность может повлиять на распространение и смертность
• Процент занятых в промышленности — более высокая подверженность промышленным выбросам
• Экспорт международной торговли — более легкое распространение между двумя странами
• Беженцы — плохие условия жизни и здоровья могут увеличить смертность
• Рабочая сила Мужчины — вероятность заражения по гендерному признаку
• Импорт международной торговли — более легкое распространение между странами
• Отсутствие подписки на мобильные устройства — хорошо информированное население/лучшие условия
• Город Процент населения — более быстрое распространение вируса из-за высокой плотности населения.
• Отсутствие подписки на Интернет — хорошо информированное население/лучшие условия
• Потребление птицы — высококалорийная диета/нездоровые методы разведения
• Потребление баранины — Высококалорийная диета/нездоровые методы разведения
• Рабочая сила Женщины — вероятность заражения в зависимости от пола
• Процент безработных — Плохие условия жизни и здоровья.
• % ВВП Расходы на образование — образованное население означает хороший контроль
• Нет видов, находящихся под угрозой исчезновения — лучшая политика защиты животных
• Баланс международной торговли — более легкое распространение между странами

Приведенный ниже код запускает модель с целевой переменной в виде количества случаев:-

from sklearn.ensemble import RandomForestRegressor
dfn=Worlddf.drop(['Country','Region','cases','deaths'], axis=1)
lsd=Worlddf['cases']
lsd=pd.get_dummies(lsd)
model = RandomForestRegressor(random_state=1, max_depth=10)
dfn=pd.get_dummies(dfn)
model.fit(dfn,lsd)features = dfn.columns
importances = model.feature_importances_
indices = np.argsort(importances)[-20:]  # top 20 features
plt.title('Feature Importances by Cases')
plt.barh(range(len(indices)), importances[indices], color='b', align='center')
plt.yticks(range(len(indices)), [features[i] for i in indices])
plt.xlabel('Relative Importance')
plt.show()compcasedf = pd.DataFrame( {"Column": dfn.columns, "importance": importances}).sort_values('importance', ascending=False)

На основе приведенной выше модели мы оцениваем 18 основных функций, влияющих на количество обращений.

В списке 18 лучших такие функции, как Плотность населения, Возраст старше 60 лет, Темпы роста населения, довольно интуитивно понятныи понимаются коллективно, но другие, которые кажущиеся не связанными, следующие. Я попытался связать эту функцию с предполагаемым объяснением следующим образом:

• Экономика от сельского хозяйства — здоровое веганское питание/меньше промышленных выбросов
• Количество видов, находящихся под угрозой исчезновения — улучшение условий содержания животных и политики
• Отсутствие подписки на Интернет — хорошо информированное население/лучшие условия
• Потребление баранины — Высококалорийные диеты/нездоровые методы разведения
• Процент занятых в сфере обслуживания — Потребность в большем количестве поездок приводит к большему контакту.
• Отсутствие мобильной подписки — Хорошо информированное население/лучшие условия
• Потребление птицы — высокое калорийность рациона/нездоровые методы разведения
• % ВВП Расходы на образование — Образованное население означает хороший контроль
• Беженцы — Плохие условия жизни и здоровья могут увеличить воздействие.
• Процент безработных — Плохие условия жизни и здоровья .
• Темпы роста ВВП — экономическая деятельность может повлиять на распространение
• Соотношение полов мужчин и 100 женщин — вероятность заражения в зависимости от пола
• Процент занятых в отрасли — более высокая подверженность промышленным выбросам
• Сельскохозяйственное производство Индекс — Здоровая веганская диета/меньше промышленных выбросов
• Потребление говядины — Высококалорийная диета/нездоровые методы разведения

Несмотря на то, что большинство функций логически интуитивно понятны, есть несколько поразительных наблюдений, которые явно выделяются и заставляют нас копнуть глубже. Структура потребления мяса, включая потребление мяса птицы, коз и говядины, является одним из таких выводов, который имеет относительно большое значение как для числа случаев заболевания, так и для числа смертей. Означает ли это, что ухудшение качества продуктов питания из-за негигиеничных методов разведения животных и воздействия современного производства мяса на окружающую среду привело к снижению иммунитета человека? Глобализация определенно улучшила обмен товарами и услугами и привела к легкой торговле даже между самыми дальними странами, но привела ли она также к более быстрому распространению вируса. В исследовании также подчеркивается, как наш мир меняется с мобильными и интернет-технологиями. Связь случаев/смертей с подпиской на мобильную/интернет-связь может означать более легкий доступ к информации и повышение готовности к реагированию на вспышку. Интересно, что исследование обнаруживает сходство между случаями/смертями среди беженцев и безработицей, что в основном указывает на то, что плохие условия жизни и здоровья делают население более уязвимым. Еще одно интересное наблюдение состоит в том, что государственные расходы на образование также оказывают влияние. Означает ли это, что образованное общество может справиться с такими эпидемиями лучше, чем другие, или что ценность демократического образованного общества затрудняет введение ограничений на передвижение и тем самым останавливает распространение вируса? И последнее, но не менее важное: в статье освещается тема находящихся под угрозой исчезновения видов в стране, что может указывать на поворот природы к вспышке.

У этой модели определенно есть чему поучиться, так что не стесняйтесь исследовать. Полный код и файлы данных доступны в моей учетной записи GitHub: -



Благодарю вас за то, что вы нашли время, чтобы прочитать это и предоставить ценные отзывы, которые помогут мне делать больше такой работы в будущем. Большое спасибо.