見出し画像

[機械学習]-東京で発生している感染症の関係を解析する(個別解析) その4

東京で発生している、ここ10年で100人以上陽性になった(患者数)感染症の相関を解析しました。そのPythonプログラムです。

データ解析なので、ファイルを読み込んでしまえば、どの順番で実施してもOKです。

コード量が多いので、1.全体解析(今回) 2.個別解析 に分けます。
前回に引き継いで、2.個別解析 編です。

(1)はじめに

機械学習と数理最適化 Advent Calendar 2023 チャレンジ の文書です。

の下図のとおり、数理最適化の分です。


(2)想定している活用シーン

①データ解析
このプログラムも利用して、感染症解析が進めば幸いです。

なぜならば、中国本土でも同様の現象が起きているからです

(3)想定している運用

①感染症解析

今回、気にしている梅毒は性感染症の一つであり、予防や治療に関する正しい知識が広く普及していない場合、感染のリスクが高まります。性教育が不十分であるか、あるいは偏見がある場合、人々は適切な予防策を取らない可能性が高まります。

  1. 健康システムの不足: 健康システムの整備が不十分な地域では、梅毒の早期発見や治療が適切に行われない可能性があります。医療へのアクセスが制約されている場合、感染が拡大するリスクが高まります。

  2. 性的な行動の変化: 社会や文化の変化、性的な行動の変容が梅毒の増加につながることがあります。例えば、性的な解放や多様性の受容が進む中で、異性愛者や同性愛者を問わず、異性との性的な関係が増加することが梅毒の感染リスクを増加させる可能性があります。

  3. 薬剤耐性の発生: 梅毒菌に対する薬剤耐性が発生することで、治療が難しくなり、感染の広がりが抑制されにくくなります。薬剤耐性の問題は、感染症全般にわたって懸念されています。

  4. 社会経済的要因: 貧困や不平等、社会的排除などの要因が、梅毒の増加に寄与することがあります。これらの要因は、予防や治療へのアクセスを妨げ、感染症の広がりに影響を与える可能性があります。

(4)コードの概要


このコードは、東京の感染症データを読み込んで分析し、可視化するための一連のデータ分析および可視化ステップを実行します。プログラム全体は次のセクションに分かれています:


環境設定: 必要なライブラリのインポートとGoogle Colab上でのドライブのマウントを行います。

  1. データ設定: 上記データをCSVファイルとして読み込み、データの可視化を行います。

  2. Seaborn全体解析: Seabornを使用してデータの相関を確認するための相関散布図、ヒートマップ、クラスターマップを生成します。

今回はここから以下のPythonプログラムを解説します。

4.個別解析: 箱ひげプロット、バイオリンプロット、相関図、ヒストグラムを生成して、個別の特徴に関する解析を実施します。

5.詳細解析: データの散布図と線形近似線を作成し、カーネル密度推定を行います。

(4)コード詳細説明

[0] 環境設定:

  • 必要なライブラリ(Pandas、Matplotlib、Statsmodels、Seabornなど)をインポートします。

  • Google Colab上でのドライブのマウントを行います。

[1] データ設定:

  • COVID-19関連データをCSVファイルから読み込みます。

  • Seabornのスタイルを設定し、データの最初の5行を表示します。

まで終了している、という前提です。

[4] 個別解析:

  • 特定の特徴(項目を2つ選ぶ 例:"Rubella"、"Whoop")に関する箱ひげプロット、バイオリンプロット、相関図、ヒストグラムを作成します。

[5] 詳細解析:

  • 特定の特徴(項目を2つ選ぶ 例:"Rubella"、"Whoop")に関する散布図を作成し、線形近似線を追加しています。

  • カーネル密度推定を行い、そのバンド幅を表示します。

これらの解析と可視化手法は、データセットの異なる側面を視覚的に理解するのに役立ちます。データセットの特徴や相関関係を調査し、洞察を得るのに役立つプログラムです。


Google Colaboratory(通称Colab)は、Googleが提供するクラウドベースのJupyterノートブック環境で動作するようにしてあります。
自社環境に合う形で使ってください。

1.個別解析(今回)のPythonプログラムです。

# 下記Pythonプログラムを実施したあとで実施してください。
# **********************
# [0] 環境設定 *********
# **********************
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

import numpy as np
import seaborn as sns
# ドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive/darts

# **********************
# [1] データ設定 *******
# **********************
#個人の環境です
# データの読み込みと可視化
data = pd.read_csv("datasets/covid-v3.csv")

#seabornで可視化を行う準備
sns.set()

#表示して確認
#print(data)
print(data.head())


#実際、処理の順番は任意です。


# **********************
# [4] 個別解析1 *********
# **********************
## 4-1 箱ひげ ヴァイオリンプロットの表示 ##
# グラフの表示領域を作成
plt.figure(figsize=(12, 12))

# a.箱ヒゲ図の表示
plt.subplot(2, 2, 2)
data.boxplot(column=['Rubella', 'Whoop'])
plt.title('Boxplot')
plt.ylabel('Values')

# b.ヴァイオリンプロットの表示
plt.subplot(2, 2, 2)
plt.title('Violin Plot')

# a + b ヴァイオリンプロットの表示
data_for_violin = data[['Rubella', 'Whoop']]
plt.ylabel('Values')
plt.xlabel('Features')
plt.xticks([1, 2], ['Rubella', 'Whoop'])
plt.violinplot(data_for_violin.values, showmeans=True)
plt.tight_layout()

# グラフの表示
plt.tight_layout()
plt.show()

# **********************
# [4] 個別解析2 *********
# **********************
## 4-2 箱ひげ ヴァイオリンプロットの表示 ##

## ③ 各相関 図示
r = np.corrcoef(data['Rubella'], data['Whoop'])[0, 1]
plt.scatter(data['Rubella'], data['Whoop'])
plt.title('r=%.2f' % r, size=14)
plt.xlabel('Rubella', size=14)
plt.ylabel('Syphilis(%)', size=14)

plt.show()

## ④各ヒストグラム
sns.distplot(data['Whoop'])

# **********************
#  [4] 個別解析3 *********
# **********************
## 4-3 箱ひげ ヴァイオリンプロットの表示 ##
# グラフの表示領域を作成
plt.figure(figsize=(12, 12))

# a.箱ヒゲ図の表示
plt.subplot(2, 2, 2)
data.boxplot(column=['Atype', 'Whoop'])
plt.title('Boxplot')
plt.ylabel('Values')

# b.ヴァイオリンプロットの表示
plt.subplot(2, 2, 2)
plt.title('Violin Plot')

# a + b ヴァイオリンプロットの表示
data_for_violin = data[['Atype', 'Whoop']]
plt.ylabel('Values')
plt.xlabel('Features')
plt.xticks([1, 2], ['Atype', 'Whoop'])
plt.violinplot(data_for_violin.values, showmeans=True)
plt.tight_layout()

# グラフの表示
plt.tight_layout()
plt.show()

# **********************
#  [4] 個別解析4 *********
# **********************
## ③ 各相関 図示
r = np.corrcoef(data['Atype'], data['Whoop'])[0, 1]
plt.scatter(data['Atype'], data['Whoop'])
plt.title('r=%.2f' % r, size=14)
plt.xlabel('Atype', size=14)
plt.ylabel('Whoop(%)', size=14)
plt.show()

# **********************
# [5] 詳細解析1 *********
# **********************
## ④各ヒストグラム
sns.distplot(data['Atype'])

# データの散布図をプロット
plt.scatter(data['Rubella'], data['Whoop'])
plt.title('Scatter Plot', size=14)
plt.xlabel('Rubella', size=14)
plt.ylabel('Whoop(%)', size=14)

# 線形近似線の計算
coefficients = np.polyfit(data['Rubella'], data['Whoop'], 1)
line = np.polyval(coefficients, data['Rubella'])

# 線形近似線のプロット
plt.plot(data['Rubella'], line, color='red', label='Linear Fit')

# 相関係数の表示
r = np.corrcoef(data['Rubella'], data['Whoop'])[0, 1]
plt.title(f'Scatter Plot (r={r:.2f})', size=14)

## ①線形近似線の数式を表示 ##
equation = f'y = {coefficients[0]:.2f}x + {coefficients[1]:.2f}'
plt.text(np.min(data['Rubella']), np.max(data['Whoop']), equation, color='red', fontsize=14, verticalalignment='top', horizontalalignment='left')

plt.legend()
plt.show()

# **********************
# [5] 詳細解析2 *********
# **********************
## ヒストグラム
# sns.distplot(data['a'])

# ③カーネル密度推定
from scipy.stats import iqr

# カーネル密度分布の描画
sns.kdeplot(data['Whoop'])

# カーネル密度推定のバンド幅を計算
iqr_value = iqr(data['Whoop'])
bandwidth = 0.9 * min(data['Whoop'].std(), iqr_value / 1.34) * (len(data['Syphilis']) ** (-0.2))

## ②カーネル密度推定のバンド幅を左上に赤で表示 ##
plt.text(0.05, 0.95, f'Bandwidth: {bandwidth:.3f}', transform=plt.gca().transAxes, fontsize=16, color='red', verticalalignment='top')

plt.show()



Colabについてわかりやすく説明します。

  1. 無料で利用可能: Colabは無料で利用できます。Googleアカウントを持っていれば、ブラウザ上で簡単に利用できます。GPUやTPUも利用でき、機械学習やディープラーニングのトレーニングなどに便利です。

  2. Jupyterノートブック形式: ColabはJupyterノートブック形式を採用しています。コードセルとテキストセルを組み合わせ、コードの実行と説明文を同じ場所で管理できます。

  3. クラウドベース: Colabはクラウド上で動作するため、自分のマシンに環境を構築する必要がありません。また、Google Driveとの連携も容易で、ノートブックを保存し、共有することができます。

  4. 豊富なライブラリとハードウェアアクセラレーション: Colabには多くの機械学習やデータサイエンスに使用されるライブラリが事前にインストールされています。また、GPUやTPUなどのハードウェアアクセラレーションも利用可能で、大規模な計算を高速に行うことができます。

  5. 共有と協力: ノートブックはGoogle Driveに保存され、他のユーザーと共有しやすいです。また、リアルタイムで共同作業も可能です。

  6. データの可視化と解析: Colabにはデータの可視化や解析に役立つツールが豊富に組み込まれています。例えば、MatplotlibやSeabornなどのライブラリを使ってグラフを描画することができます。

Colabは教育、研究、プロトタイピング、データ解析、機械学習のトレーニングなど、さまざまな目的に利用されています。無料で使えるため、手軽に始めることができ、Googleのクラウドリソースを利用できる点が魅力です。

追記:


機械学習と数理最適化について

機械学習と数理最適化 Advent Calendar 2023 チャレンジ している理由

#機械学習 , #ChatGPT , #量子コンピューター , #AI ,
#クリスマス , #アドベントカレンダー , #量子コンピューター , #数理最適化 , #量子アニーリング

よろしければサポートよろしくお願いします。いただいたサポートは、日中韓とアメリカのリアルタイム感情分析を進めるために使わせていただきます