meducodehttps://meducode.com医療者のためのプログラミング学習サイトWed, 13 Nov 2024 09:45:03 +0000jahourly1https://meducode.com/wp-content/uploads/2024/11/splash-150x150.pngmeducodehttps://meducode.com3232 予測因子が結果にどれくらい寄与するのか解析しようhttps://meducode.com/data-science/detailed-prediction/https://meducode.com/data-science/detailed-prediction/#respondSun, 10 Nov 2024 12:20:28 +0000https://meducode.com/?p=306

本記事は、以下の記事の続編です。設定等は以下の記事を踏襲します。 以下のデータセットを使用します。 Google Colabでのcsvファイルの読み込み等は以下の記事を参考にしてください。 基本となるGoogle Col ... ]]>

おさらい

本記事は、以下の記事の続編です。設定等は以下の記事を踏襲します。

サムネイル 分類モデルを使って診断AIを作ろう

使用するデータ

以下のデータセットを使用します。

Google Colabでのcsvファイルの読み込み等は以下の記事を参考にしてください。

サムネイル Pythonでエクセルファイルを読み込んでグラフ化しよう

基本となるGoogle Colabのノートブックは以下からダウンロードできます。

今回の目的

これまでの演習は、目的変数である「糖尿病か否か」に対して、「妊娠回数」や「血糖値」などの説明変数があり、それらを「丸ごとAIに突っ込んだ」感じでしたね。

今回は、目的変数と説明変数の関係性を解析してみましょう。

seino
seino

アウトカムと予測因子の関係性を明示しましょう

決定木(Decision Tree)での解析

決定木って何?

決定木は、データを特徴量に基づいて分割し、ツリー構造で予測を行うシンプルなモデルです。

各ノードでデータを条件によって分割し、最終的な葉(リーフ)ノードで予測結果を出します。

seino
seino

まずは結果を見た方が早いかもしれません。

決定木モデルを作ってみよう

以下のプロンプトで、Colab上にコードを生成します。

このデータ(file_path)を使って、決定木モデルを作成してください。
なお目的変数は、diabetes.csvのoutcome列であり、糖尿病と診断されたか否かを表しています。糖尿病の場合は1、健全であれば0というカテゴリー変数が使われています。
本モデルは、その他の説明変数を使って、目的変数を予測する2クラス分類タスクです。
決定木モデルを訓練後に、どの説明変数がどの程度寄与するのか可視化してください。
また決定木を可視化する際は、各項目が見えるように拡大縮小できるようにしてください。

生成されたコードは以下のとおりです。

Python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
# Googleドライブをマウント
# (すでにマウントされている場合は不要)
# from google.colab import drive
# drive.mount('/content/drive')
# CSVファイルのパスを指定
file_path = '/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv'
# CSVファイルを読み込む
df = pd.read_csv(file_path)
# 説明変数と目的変数を指定
X = df.drop('Outcome', axis=1)
y = df['Outcome']
# データを訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 決定木モデルを作成
model = DecisionTreeClassifier(max_depth=3, random_state=42) # max_depthは木の深さを制限
# モデルを訓練
model.fit(X_train, y_train)
# 決定木の可視化
plt.figure(figsize=(20, 10)) # 図のサイズを大きくする
plot_tree(model, feature_names=X.columns, class_names=['0', '1'], filled=True)
plt.show()
# 特徴量の重要度を表示
feature_importance = pd.DataFrame({'feature': X.columns, 'importance': model.feature_importances_})
print(feature_importance.sort_values('importance', ascending=False))

そして得られた決定木が以下のとおりです。

ちょっと図が小さくて見えないかもしれませんが、一番上の四角には「Glucose <= 127.5」と書いてあります。

血糖値が127.5以下の場合」という意味ですね。

これは「127.5を閾値にするとうまく説明できる」という意味だと考えてください。

ジニ不純度

gini = 0.453 とあります。これはジニ不純度と呼ばれる指標で、2クラス分類の場合0から0.5の間の数値になります。

0に近いほど良いと考えてください。ジニ不純度が0に近いほど、クラス(糖尿病か健全か)のばらつきが少ないことを表しています。

0.453は高いばらつき度合いと言えます。つまり「血糖値127.5を閾値にすると良いものの、あんまり役には立たないよ」という意味に解釈できます。

サンプル数

sample = 614とあります。これはそのままサンプル数ですね。

全データは768件ありますが、AIの学習にはその80%を使ったので、614件になっています。

クラス分布

value = [401, 213]は、クラス分布を表しています。

クラス0(健全クラス)は401件、クラス1(糖尿病クラス)は213件という意味です。

最頻出クラス

class = 0は、614件のデータのうち最も多く分類されたクラスを表しています。つまり健全クラスですね。

ランダムフォレスト(Random Forest)での解析

ランダムフォレストって何?

ランダムフォレストは、多数の決定木を組み合わせたアンサンブル学習アルゴリズムです。

各決定木は異なる特徴量やデータサンプルを用いて訓練され、その結果を多数決(分類の場合)や平均(回帰の場合)で統合します。

ランダムフォレスト(RF)は、複数の決定木からなっています。
そのため決定木のようにツリー構造での可視化はできません(1つ分の決定木の可視化はできます)。
そのため「特徴量の重要度(Feature Importance)」で図示します。

ランダムフォレストのコードは以下のとおりです。

Python
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# ランダムフォレストモデルを作成
model = RandomForestClassifier(n_estimators=100, random_state=42)
# モデルを訓練
model.fit(X_train, y_train)
# テストデータで予測
y_pred = model.predict(X_test)
# 正解率を計算
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 特徴量の重要度を表示
feature_importance = pd.DataFrame({'feature': X.columns, 'importance': model.feature_importances_})
print(feature_importance.sort_values('importance', ascending=False))
# 可視化 (特徴量の重要度を棒グラフで表示)
plt.figure(figsize=(10, 6))
plt.barh(feature_importance['feature'], feature_importance['importance'])
plt.xlabel('Importance')
plt.ylabel('Feature')
plt.title('Feature Importance of Random Forest')
plt.show()

ランダムフォレストによる結果

結果は以下のとおりです。

血糖値が高い重要度を示していますが、決定木のときほどではありませんね。

勾配ブースティング(Gradient Boosting)での解析

勾配ブースティングって何?

勾配ブースティングは、複数の弱学習器(通常は浅い決定木)を順番に作成し、それぞれのモデルが前回までの誤差(残差)を補正する形で訓練されるアンサンブル学習手法です。

つまり1つの決定木の間違い(誤差)を正すように、次の新しい決定木が学習されていくイメージです。

勾配ブースティングモデルの実装は以下のとおりです。

Python
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
# 説明変数と目的変数を指定
X = df.drop('Outcome', axis=1)
y = df['Outcome']
# データを訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 勾配ブースティングモデルを作成
model = GradientBoostingClassifier(n_estimators=100, random_state=42)
# モデルを訓練
model.fit(X_train, y_train)
# テストデータで予測
y_pred = model.predict(X_test)
# 正解率を計算
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 特徴量の重要度を表示
feature_importance = pd.DataFrame({'feature': X.columns, 'importance': model.feature_importances_})
print(feature_importance.sort_values('importance', ascending=False))
# 可視化 (特徴量の重要度を棒グラフで表示)
plt.figure(figsize=(10, 6))
plt.barh(feature_importance['feature'], feature_importance['importance'])
plt.xlabel('Importance')
plt.ylabel('Feature')
plt.title('Feature Importance of Gradient Boosting')
plt.show()

勾配ブースティングの結果

勾配ブースティングの結果は以下のとおりです。

seino
seino

ランダムフォレストと大差ない感じがしますね

XGBoost(Extreme Gradient Boosting)による解析

XGBoostって何?

XGBoostは勾配ブースティングアルゴリズムの改良版で、高速かつ効率的な実装です。

勾配ブースティングと同様に弱学習器(通常は決定木)を組み合わせて誤差を修正していきますが、計算効率や精度向上のためにさまざまな技術的工夫が施されています。

XGBoostの実装コードは以下のとおりです。

Python
# XGBoostのライブラリをインポート
from xgboost import XGBClassifier
# 説明変数と目的変数を指定
X = df.drop('Outcome', axis=1)
y = df['Outcome']
# データを訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# XGBoostモデルを作成
model = XGBClassifier(random_state=42)
# モデルを訓練
model.fit(X_train, y_train)
# テストデータで予測
y_pred = model.predict(X_test)
# 正解率を計算
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 特徴量の重要度を表示
feature_importance = pd.DataFrame({'feature': X.columns, 'importance': model.feature_importances_})
print(feature_importance.sort_values('importance', ascending=False))
# 可視化 (特徴量の重要度を棒グラフで表示)
plt.figure(figsize=(10, 6))
plt.barh(feature_importance['feature'], feature_importance['importance'])
plt.xlabel('Importance')
plt.ylabel('Feature')
plt.title('Feature Importance of XGBoost')
plt.show()

XGBoostの結果

血糖値が重要であることはこれまでと同様ですね。

結果のまとめ

決定木

Accuracy: 0.708

  1. Glucose: 0.597
  2. BMI: 0.262
  3. Age: 0.140

ランダムフォレスト

Accuracy: 0.721

  1. Glucose: 0.259
  2. BMI: 0.170
  3. Age: 0141
  4. DiabetesPedigreeFunction: 0.124
  5. BloodPressure: 0.088

勾配ブースティング

Accuracy: 0.747

  1. Glucose: 0.389
  2. BMI: 0.170
  3. Age: 0141
  4. DiabetesPedigreeFunction: 0.124
  5. BloodPressure: 0.088

XGBoost

Accuracy: 0.708

  1. Glucose: 0.260
  2. Age: 0.139
  3. BMI: 0.136
  4. Insulin: 0.102
  5. DiabetesPedigreeFunction: 0.096
seino
seino

私の結果は以上です

4つのモデルで分類タスクを解いた結果、正解率は70~75%程度でした。

また全てのモデルで重要とされた上位3つは、Glucose, Age, BMI でした。

今回使ったGoogle Colabの実装コードは以下からダウンロードできます。

この結果をどう考察するか

今回は平均して72%程度の分類精度でした。

ちなみに下記の論文では、97.833%の分類精度を達成しています。

seino
seino

一体どうやったんでしょう?

モデルの精度が高い ≠ 現実でも役に立つ

忘れてはいけないのが、モデルの精度はデータセットを使って計算されていることです。

別の言い方をすると、精度の高いモデルは「そのデータセット(現象)をよく説明できている」といえます。

しかし、このことが新しいデータをよく説明できることと一致するわけではありません

ややこしいですね。

つまり「精度は手元のデータで計算された指標」に過ぎず、「現実世界で役に立つ」ことを保証する指標ではないのです。

新しいデータ(現実世界のデータ)が学習データと似ているときには、モデルは新しいデータでも良い精度を達成できます。この「データが似ている」ことを「データの分布が近い」と表現します。

seino
seino

現実的に役立つモデルは、現実的なデータ分布で学習したモデルということですね

上記のような理由で、AI開発をする際には「より多くの、より多様な」データで学習したいわけです。

まとめ

今回は、説明変数と目的変数の関係性を明示するために決定木系のモデルを試してみました。

なかなか高い正解率は達成できませんでしたが、血糖値、年齢、BMIが重要な因子であることが示唆されました。

モデルの精度を向上させることももちろん重要です。

しかし今回の結果を踏まえて、糖尿病のメカニズムにおいて、血糖値・年齢・BMIが何なのかを考察することも現実的なアプローチですね。

]]>
https://meducode.com/data-science/detailed-prediction/feed/0
分類モデルを使って診断AIを作ろうhttps://meducode.com/data-science/basic-classifier/https://meducode.com/data-science/basic-classifier/#respondSun, 10 Nov 2024 08:26:22 +0000https://meducode.com/?p=272

分類モデルとは、出力結果が「良性か悪性か」、「健康か病気か」などいくつかのカテゴリーになるモデルです。 「ある疾患に罹患しているか否か」という判断ができるのでAIによる診断にはぴったりです。 「良性と悪性」など、区切って ... ]]>

分類モデルって何?

分類モデルとは、出力結果が「良性か悪性か」、「健康か病気か」などいくつかのカテゴリーになるモデルです。

「ある疾患に罹患しているか否か」という判断ができるのでAIによる診断にはぴったりです。

「良性と悪性」など、区切って分けられることを「離散的(discrete)」といいます。
なお離散的の反対は「連続的(continuous)」です。

そして離散的な量(癌のステージなど)を「離散量(digital)」といい、連続量(体重など)を「アナログ(analog, analogue)」といいます。

使用するデータについて

今回は、下記の記事の続きです。

下記の内容を受講済みの方は新たにデータのダウンロード等は不要です。

サムネイル Pythonでエクセルファイルを読み込んでグラフ化しよう

上記の記事を受講していない場合は、新たにデータのダウンロードからお願いします。

こちらからデータをダウンロードしてください。

またGoogle Colabを利用します。

Google Colabの設定、csvファイルの読み込み等は以下の記事を参照してください。

サムネイル Google DriveとGoogle Colabを準備しよう

本記事の受講後に完成するコード

本記事で使用したコードは以下からダウンロードできます。

基本的には手順を一緒に進めることをおすすめしますが、あらかじめコードを読みたい方はこちらからダウンロードしてください。

これから作るモデルについて

データの内容について

データに含まれている項目は以下のとおりです。

Pregnancies:妊娠回数。妊娠回数が増えると、妊娠糖尿病のリスクが上昇します。

Glucose:経口ブドウ糖負荷試験(Oral Glucose Tolerance Test, OGTT)から2時間後の血漿中のグルコース濃度。OGTT

から2時間も経つと、健常者ではグルコース濃度は下がっています。

BloodPressure:血圧。高血圧と糖尿病には相関があります。

SkinThickness:皮膚の厚さ。皮下脂肪の量を示し、体脂肪率との相関を示します。

Insulin:OGTTから2時間後の血清インスリン濃度。インスリン抵抗性があると血糖値が高いまま維持されます。

BMI:Body Mass Index. 肥満傾向かどうかの指標です。

DiabetesPedgreeFunction:糖尿病血糖要因、糖尿病家系機能。糖尿病の家族歴と遺伝的要因を数値化した指標です。

Age:年齢。加齢に伴いインスリン分泌量が減少します。

Outcome:結果。糖尿病と診断されれば1, 健全であれば0が割り当てられます。

これらの検査項目の結果が、768名分あります。

予測したい結果

使用するデータには、Outcome(結果)という列があります。データを見ると01が入力されています。

これが「糖尿病と診断されたか否か」を表しています。健全であれば0、糖尿病であれば1です。

このように、ある種の分類を示す数カテゴリー変数(categorical variable)といいます。

例えばコインの表を0、裏を1などと表現します。
ただの割り当て用の数字なので、この数字で計算することに意味はありません

今回作る診断AIモデルは、この診断結果を出力するわけですね。

検査項目

診断結果に対応するのが、血糖値だったり、年齢だったりですね。

説明変数(explanatory variable)、特徴量(feature variable)と総称されます。

【対応する値の表現方法】
従属変数 dependent variable : 独立変数 independent variable

結果 Outcome : 予測因子 Predictor

標的変数 target variable : 特徴 feature

応答変数 response variable : 説明変数 explanatory variable

seino
seino

分野ごとに使われ方が違う感じです

まとめると「診断結果に対する根拠となる数値」と「診断結果そのもの」があるということです。

Google Colabの準備

下記の記事を受講済みの方は、000_import-data.ipynbをそのまま利用できます。

サムネイル Pythonでエクセルファイルを読み込んでグラフ化しよう

上記の記事を受講していない場合は、以下からノートブックをダウンロードしてください。

000_import-data.ipynbのページが開かれます。

ただし見えているのは私(管理者)のノートブックです。

自分用に保存するため「ファイル > ドライブにコピーを保存」を選択してください。これであなたのGoogleドライブにこのノートブックが保存されます。

自分のGoogleドライブにノートブックを保存しないと、編集はできません。

ランタイムの変更

AIを学習させる上で、GPU(Graphic Processing Unit)の利用は必須です。

Google Colabでは無料でGPUを使用することができます(ある程度の制限付きですが)。

ランタイム > ランタイムのタイプを変更」を選択してください。

ポップアップが表示されるので「T4 GPU」を選択してください。

ランタイムを接続解除して削除」という警告文が表示されますが「OK」で進めてください。

少し時間はかかりますが、ランタイムが変更されます(画面自体は変わりません)。

成功すると画面右上の部分に「T4」と表示されます。

分類AIモデルの作成

Google Colabの準備が整ったら、コーディングを始めましょう。

すでにセルが1つあり、ヒストグラムが表示されていると思います。

セルを追加しましょう。セルの境界部にカーソルを持っていくと「+ コード」と「+ テキスト」と表示されます。「+ コード」を押してください。

わかりにくかったら、左上のメニューにも「+ コード」があるのでここを押してください。

すると新しいセルが追加されます。

生成」をクリックして、以下のプロンプトを入力してください(コピペしてください)。

はじめにGoogleドライブへのマウントを行ってください。

つぎに、’/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv’ にあるcsvファイルを使って、分類モデルを作成してください。
なお、列名’Outcome’ が目的変数であり、糖尿病と診断された場合は1、健康な場合は0というカテゴリー変数が割り当てられています。
その他の列を説明変数として、Outcome列の値を予測する2クラス分類モデルを作成してください。
また、エポック数を横軸、学習データの損失と訓練データの損失を縦軸にとるグラフを図示してください。
同じように、エポック数を横軸、学習データの精度と訓練データの精度を縦軸にとるグラフも図示してください。

生成結果は、毎回一致するわけではないので、私の結果を以下に載せておきます。

seino
seino

下記のコードは長いですけど、「ふーん」くらいで流し見してください。

また自分のコードのエラーがどうしても解消されないときは、以下のコードをコピペして使ってください。

Python
# prompt: '/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv' にあるcsvファイルを使って、分類モデルを作成してください。
# Googleドライブへのマウントも行ってください。
# なお列名'Outcome' が目的変数であり、糖尿病と診断された場合は1、健康な場合は0というカテゴリー変数が割り当てられています。
# その他の列を説明変数として、Outcome列の値を予測する2クラス分類モデルを作成してください。
# また、エポック数を横軸、学習データの損失と訓練データの損失を縦軸にとるグラフを図示してください。
# 同じように、エポック数を横軸、学習データの精度と訓練データの精度を縦軸にとるグラフも図示してください。
import pandas as pd
import matplotlib.pyplot as plt
from google.colab import drive
from sklearn.model_selection import train_test_split
from tensorflow import keras
from tensorflow.keras import layers
# Googleドライブをマウント
drive.mount('/content/drive')
# CSVファイルのパスを指定
file_path = '/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv'
# CSVファイルを読み込む
df = pd.read_csv(file_path)
# 説明変数と目的変数を分ける
X = df.drop('Outcome', axis=1)
y = df['Outcome']
# データを訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# モデルを構築
model = keras.Sequential([ layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],)), layers.Dense(64, activation='relu'), layers.Dense(1, activation='sigmoid')
])
# モデルをコンパイル
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# モデルを訓練
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))
# 学習データの損失と訓練データの損失をプロット
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.show()
# 学習データの精度と訓練データの精度をプロット
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
plt.show()

上記のコードを実行すると、ずらずらーっと文字が表示されるはずです。

これが「AIが学習中の様子」です。

もう少し待つと学習が止まって、グラフが表示されます。

まだ詳しくは説明しませんが、Loss(損失値)は小さい方が良く、Accuracy(正解率)は大きい方が良い指標です。

横軸は学習回数を表しています。今回は、訓練データを50周(エポック)しています。

数値が上下していますが、大まかに言えば、Lossは学習するほどだんだん小さくなり、Accuracyはだんだん大きくなるということがわかりますね。

青は訓練データ、オレンジは検証データを表しています。

seino
seino

これで診断AIの完成です。
簡単すぎて何が起こっているのかわからないですね。

コードを修正して、結果が変わる様子を見てみよう

先ほどの結果を見ると、もっと学習させれば結果が良くなりそうですね。

学習回数を増やすようにコードを修正しましょう。

history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))というところを探してください。

そしてepochs=50のところをepochs=200に修正してください。

すると結果は以下のようになります。

重要なのはValidationの方です。オレンジの方を見てください。

するとLossは下がっていかず、Accuracyも上がっていかない様子が見て取れます。

つまり「学習回数を増やしても結果が良くなっていない」ことがわかります。

seino
seino

ここからが人間の出番ですね。

「なんでこうなったの?」と考えて仮説を立て、検証していきます。

さらに学習回数を増やすとどうなるのか

気になる方もいると思うので、もっと学習回数を増やしてみました。

Validation Loss は増加傾向、Validation Accuracy は0.65あたりでプラトーという感じですね。

つまり学習回数を増やしても、予測精度は上がらず、間違え方もひどくなっている状態です。

プラトー(plateau)とは
地学用語で高原や台地を意味します。
これを転用して、グラフ上で見て数値が変わらない・一定であることをプラトーと表現します。

訓練データでの損失値(Training Loss)は減少しているのに、検証データでの損失値(Validation Loss)は増加していく現象を過学習(Overfitting)といいます。

seino
seino

このグラフは、わかりやすい過学習の見本ですね。

作ったモデルをどうやって使うの?

seino
seino

結局これ何なん?という感想ですよね

「これがAIなの?」、「一体何やってんの?」と思っているかと思います。

ここまではdiabetes.csvファイルの説明変数のパータンを学習して、糖尿病かを診断するAIを作成しています。

しかし実際には「作ったあとに何をするの?」ということが大事ですよね。

AIモデルを作る目的は、「まだ手元にない新しいデータを入力」して診断することです。

ここまでは単に「既存データのパータンを学習させた」だけです。次は「これを使いましょう」というステップに移ります。

新しいデータをモデルに入力する

作ったモデルの利用方法は単純です。

新しい患者データをモデルに入力して、糖尿病かどうかの診断をさせるのです。

新しいデータを入力すれば、モデルは糖尿病か否かを出力します。
しかしその診断が実際に正しいかどうかは不明です。
そして診断結果の責任は、日本の医師/歯科医師法上、医師あるいは歯科医師が負うことになっています。

diabetes.csvには、診断結果(Outcome)が含まれていますが、新しいデータには当然ありません。

そのためAIの診断結果を受けて「AIの診断をどう評価するか」という人間側の判断という新しいステップが生じるのです。

新しいデータを作ってみよう

以下のプロンプトで新規データを生成し、その診断結果も表示してもらいました。

ここまでに作成したモデル(modelインスタンス)を使って、模擬データに対する予測(診断)を行ってください。
模擬データは、学習に使用した’/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv’ のデータを参考にして、新たに作成してください。
まずは5名分の模擬データを作ってください。
そして各人のデータを表示し、その人の診断結果もわかりやすく表示させてください。

生成されたコードは以下のとおりです。

Python
import pandas as pd
import numpy as np
# 模擬データを作成
mock_data = { 'Pregnancies': [6, 1, 8, 1, 0], 'Glucose': [148, 85, 183, 89, 137], 'BloodPressure': [72, 66, 64, 66, 40], 'SkinThickness': [35, 29, 0, 23, 35], 'Insulin': [0, 0, 0, 94, 168], 'BMI': [33.6, 26.6, 23.3, 28.1, 43.1], 'DiabetesPedigreeFunction': [0.627, 0.351, 0.672, 0.167, 2.288], 'Age': [50, 31, 32, 21, 33]
}
mock_df = pd.DataFrame(mock_data)
# 予測を行う
predictions = model.predict(mock_df)
# 結果を表示
for i in range(len(mock_df)): print(f"--- Person {i+1} ---") print(mock_df.iloc[i]) if predictions[i][0] > 0.5: print("Diagnosis: Diabetes") else: print("Diagnosis: No Diabetes") print("-" * 20) 

実行結果は以下のとおりです。

Person 1~5の模擬データが作られて、それぞれ診断されましたね。

このように既存(過去)のデータからAIモデルを作成し、新規(未来)のデータを入力するのが、医療AIの活用方法です。

実行コードのダウンロード

ここまで実行したコードを以下からダウンロードできます。

「なぜか自分のコードが動かない」というような場合にご活用ください。

まとめ

今回は、diabetes.csvを使って糖尿病診断AIを開発しました。

生成AIを使うことで、それほど苦労することなく分類AIモデルを作成できたと思います。

また「過学習」という重要な概念も登場しました。

seino
seino

AIって簡単に作れるんだ、と思っていただければ幸いです

]]>
https://meducode.com/data-science/basic-classifier/feed/0
Pythonでエクセルファイルを読み込んでグラフ化しようhttps://meducode.com/data-science/import-data/https://meducode.com/data-science/import-data/#respondSun, 10 Nov 2024 04:36:46 +0000https://meducode.com/?p=186

ではPythonプログラミングをはじめましょう。 今回使用するのは、Pima Indians(ピマ・インディアン)の糖尿病に関するデータセットです。 Pima Indiansはアメリカのアリゾナ州に住むネイティブ・アメリ ... ]]>

本記事での目標

  1. エクセルのデータをPythonで読み込む。
  2. Pythonでデータをグラフ化する。

ではPythonプログラミングをはじめましょう。

seino
seino

本サイトでは、データ分析をしながらPythonプログラミングを学習します。

とにかく「使って覚える」スタイルで進めます。

今回使用するデータ:Pima Indians Diabetes Database

今回使用するのは、Pima Indians(ピマ・インディアン)の糖尿病に関するデータセットです。

Pima Indiansはアメリカのアリゾナ州に住むネイティブ・アメリカンであり、40歳以上の2/3は糖尿病に罹患しています。

本データは21歳以上の被験者(768名)の医療データと、糖尿病に罹患しているかどうかがまとめられています。

本記事の受講後のGoogle Colabデータ

この記事をすべて実行したあとのGoogle Colabのデータは以下から閲覧できます。

データのダウンロード

では早速、データをダウンロードしましょう。

こちらからダウンロードしてください。エクセルファイル(diabetes.xlsx)がダウンロードされます。

もしダウンロードできない場合は、こちらからダウンロードしてください。
ここからダウンロードした場合は、以下の「CSVファイルに変換する」手順を飛ばしてください。

データの中身を見てみよう

Googleドライブを開いてください。

なおGoogleドライブを利用するまでの手順は以下を参照してください。

サムネイル プログラミング学習用のGoogleアカウントをつくろう サムネイル Google DriveとGoogle Colabを準備しよう

Googleドライブ内に「Pythonによるデータ分析入門 > 初級編 > 000_データの読み込みとグラフ化」の順にフォルダを作成してください。

つまり「マイドライブ」フォルダの下に「Pythonによるデータ分析入門」をつくり、さらにその下に「初級編」、さらに下に「000_データの読み込みとグラフ化」という入れ子構造でフォルダを作成してください。

実際には好きなようにフォルダを作ってOKです。
ただし、のちのち「ここにあるファイルを使ってね」と説明するかもしれないので、同じフォルダ構成だと楽だと思います。

フォルダを作ると以下のような画面になります。

作成したフォルダにダウンロードしたdiabetes.xlsxファイルをアップロードしてください。

seino
seino

「どうやるの?!」と思ったみなさん、ごめんなさい

わざと細かい説明を省略しました。

「なるべく写真を増やしてわかりやすくしたい」と思っていますが、時間の経過とともに、写真が実際の画面と変わってしまう場合も多いのです。

プログラミングを学習する上で「多分こうやるんだろうな力」も重要です。
そのため、ちょっとイジワルな書き方をしました(すみません)。フォルダ作成の詳細は以下のとおりです。

Google Driveの「マイドライブ」を選択する。
「新規」ボタンから「新しいフォルダ」を選択する。

新しいフォルダ」を選択し、フォルダ名を入力してください。

もしフォルダ名を間違えても、「フォルダを選択して右クリック」メニューから「名前を変更」とすればOKです。

この手順で、まずは「Pythonによるデータ分析入門」フォルダを作り、フォルダ名をダブルクリックして当該フォルダ内に入ります。そしてもう一度「新規」から「初級編」フォルダを作成……と繰り返してください。

_“(アンダースコア)の入力方法が分からないときは、本文からコピペすればOKです。

ダウンロードしたエクセルファイルをGoogleドライブにアップロードする。

diabetes.xlsx ファイルをGoogleドライブにアップロードします。

ドラッグ・アンド・ドロップで行うのが簡単ですが、メニューの「新規」から「ファイルをアップロード」を選択してもOKです。

以上で、新規フォルダを作成して、ファイルをアップロードするまでの手順は完了です。

ここまででdiabetes.xlsxファイルのアップロードは完了です。

つぎにファイルを選択して右クリックから「アプリで開く > Googleスプレッドシート」を押してください。

Googleスプレッドシートは、Googleが提供しているExcelのようなものです。

Microsoft Excel ほど高機能ではありませんが、十分に活用できます。

これが今回使用するPima Indians Diabetes Databaseの内容です。

「こんなことしないで、単にエクセルで開けばいい」という意見は、そのとおりです。
本記事は「パソコンにエクセルがなくても大丈夫」という意図で作成しています。

データの内容を見る

seino
seino

ここが意外と忘れ去られるポイントです!!

まずはデータの全体像をざっと見ましょう。

プログラミングやBIツールでデータ分析をするときに意外と忘れられてしまうのが「自分でデータの全体像を見る」ことです(「BIツール」とはBuiness Intelligenceツールのことで企業が保有するデータを解析し、意思決定するためのツール群を指します)。

「どれくらいの数字が並んでいるのか」、「欠損値はないか」、「数字の中に文字が混ざっていないか」などをざっと見ましょう。総じていえば「どんなデータなのか」をなんとなく把握するとよいでしょう。

列名の確認

列(縦)を見ると、「Pregnancies(妊娠回数)」、「Glucose(血糖値)」、「BloodPressure(血圧)」、「SkinThickness(皮膚の厚さ)」、「Insulin(インスリン濃度)」、「BMI」、「DiabetesPedigreeFunction(糖尿病血糖要因)」、「Age(年齢)」、「Outcome(結果)」の合計9列あることがわかりました。

これらの項目と糖尿病の関連について補足します(エクセルデータからでは分からない部分を含みます)。

Pregnancies:妊娠回数。妊娠回数が増えると、妊娠糖尿病のリスクが上昇します。

Glucose:経口ブドウ糖負荷試験(Oral Glucose Tolerance Test, OGTT)から2時間後の血漿中のグルコース濃度。OGTT

から2時間も経つと、健常者ではグルコース濃度は下がっています。

BloodPressure:血圧。高血圧と糖尿病には相関があります。

SkinThickness:皮膚の厚さ。皮下脂肪の量を示し、体脂肪率との相関を示します。

Insulin:OGTTから2時間後の血清インスリン濃度。インスリン抵抗性があると血糖値が高いまま維持されます。

BMI:Body Mass Index. 肥満傾向かどうかの指標です。

DiabetesPedgreeFunction:糖尿病血糖要因、糖尿病家系機能。糖尿病の家族歴と遺伝的要因を数値化した指標です。

Age:年齢。加齢に伴いインスリン分泌量が減少します。

.xlsxファイルを.csvファイルに変換する

もともとはdiabetes.xlsxというファイル形式でしたが、これをdiabetes.csvというファイル形式に変換します。

このドット”.“以降の部分を「拡張子(extension, エクステンション)」と言います。

csvは、表形式データ(行列データ)を保存するために用いられる一般的な拡張子です。プログラミングでは.xlsxはあまり扱わず、.csvを使うことがほとんどです。

csvファイルにすると大体のパソコンで処理できるので、こちらが使われています。

拡張子って何?

例えば、xlsxという拡張子はMicrosoft Excelと紐づいており、docxはMicrosoft Wordですよね。

同じようにcsvはテキストエディタと結びついています。テキストエディタというのは、Windows標準の「メモ」アプリ(Macではテキストエディット)であり、ほとんどのパソコンにインストールされている最も単純なアプリです。

なお、csvComma Separeted Valueの略であり、エクセルの「セル」に相当するものをカンマ区切りで表現しています。

例えば、Pregnancies, Glucose, BloodPressureと書くとセルが3つ横に並んでいることを意味します。

Googleスプレッドシートでcsvファイルを出力する

Googleスプレッドシート画面に戻ってください。

ファイル > ダウンロード > カンマ区切り形式」を選択してください。

するとあなたのパソコンにdiabetes.csvファイルがダウンロードされます。

ダウンロードしたdiabetes.csvファイルをGoogleドライブにアップロードしてください(diabetes.xlsxファイルと同じ階層でOKです)。

seino
seino

xlsxからcsvへの変換は、Google SpreadSheetではなくMicrosoft Excelでも可能です。

アップロードが完了すると上記のような画面になります。

Googleドライブにdiabetes.xlsx(もとのファイル)とdiabetes.csv(変換後のファイル)の2つが保存されています。

Google Colabからデータを読み込もう

ではGoogle Colabに画面を戻してください。

seino
seino

画面を行ったり来たり大変だな、と思った方は以下の記事を参考にしてください。

サムネイル ウェブブラウザの分割表示でプログラミング学習を効率化しよう

ファイル > ドライブの新しいノートブック」を選択してください。

画面の切り替えに少し時間がかかりますが、新しい画面が表示されます。

Untitiled0.ipynb」と表示されていますね。

これは、Untitled0(= 無題0)というファイル名のノートブックです。

.ipynbという拡張子は、ノートブックのための拡張子です。

.ipynbは、「Interactive PythonのNotebookだよ」という意味です。
Google Colabは、そもそもIPyhon(対話型Python)という機能を使っているので、ノートブックは.ipynbという拡張子を使っているわけですね。

ファイル名を変更

ノートブックを新しく作ると、Untitiled(無題)というファイル名が自動的につきます。

わかりにくいので、きちんと名前をつけましょう。

ファイル名のところにカーソルを持っていき、クリックすると編集できるようになります。

もしくは「ファイル > 名前の変更」を選択してください。

ファイル名を「000_import-data」としてください。

seino
seino

繰り返しになりますが、実際にはファイル名は何でもOKです。
本ブログと同じにしておくと「分かりやすい」ってだけです。

ノートブックの保存場所を移動

先ほど、Googleドライブ内に「Pythonによるデータ分析入門 > 初級編 > 000_データの読み込みとグラフ化」という順序でフォルダを作りました。

ノートブックもここに保存しましょう。

ファイル > 移動」を選択してください。

すると下記のようにポップアップウィンドウが表示されるので、「Colab Notebooks」の前にある矢印をクリックしてください。

すると、以下のように切り替わります。

フォルダの階層が上に行ったわけですね。今は「マイドライブ」フォルダの中身が見えている状態です。

作成した「Pythonによるデータ分析入門 > 初級編 > 000_データの読み込みとグラフ化」という順番でフォルダの階層を下りていきます。

目的のフォルダである「000_データの読み込みとグラフ化」まで来たら「フォルダを選択」を押してください。

これで、000_import-data.ipynbファイルが、「000_データの読み込みとグラフ化」フォルダに移動しました。

この状態でGoogleドライブを確認してみると、上のように見えます。

確かに000_import-data.ipynbファイルが保存されていますね。

チェックポイント1. フォルダの階層構造
seino
seino

色々と細かい指示を出してきたので、ちょっとまとめますね

Googleドライブ(マイドライブ)には、現在の状態では2つのフォルダがあります。

「Pythonによるデータ分析入門」と「Colab Notebooks」です。なのでマイドライブには以下のような2つのフォルダが見えています。

もちろん人によっては、他のフォルダを作成している場合もありますが、本記事における指示に従うと以下の2つが見えるはずです。

そして「Pythonによるデータ分析入門」をダブルクリックすると「初級編」フォルダが見えます。

「初級編」フォルダをダブルクリックすると「000_データの読み込みとグラフ化」フォルダが見えます。

「000_データの読み込みとグラフ化」フォルダをダブルクリックすると、ようやくファイルが見えます。

私の場合はbrestcancer.csvも見えていますが、本記事の指示に従うとdiabetes.xlsx, diabetes.csv, 000_import-data.ipynbという3つのファイルがあるはずです。

「フォルダ名やファイル名はコピペしてください」と指示をしていますが、どうしても「半角スペース」が紛れ込んでしまいます。

seino
seino

この半角スペースがクセモノなんです。それだけでエラーが出てしまうのです

演習でエラーが生じないように、フォルダもコードで作成するのもOKです。

以下のコードをGoogle Colabで実行すれば、ここまでのフォルダ構造等の設定を行うことができます。

Python
from google.colab import drive
import os
import requests
# Googleドライブのマウント
drive.mount('/content/drive')
# フォルダの作成
folder_path = '/content/drive/MyDrive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化'
os.makedirs(folder_path, exist_ok=True)
# CSVファイルのダウンロード
csv_url = 'https://drive.google.com/uc?id=1E4a--uFQSZVmyEEp06ojH3W-UfofkgS1'
csv_file_path = os.path.join(folder_path, 'diabetes.csv')
try: response = requests.get(csv_url) response.raise_for_status() # HTTPエラーが発生した場合に例外を発生させる with open(csv_file_path, 'wb') as f: f.write(response.content) print(f'CSVファイルを {csv_file_path} にダウンロードしました。')
except requests.exceptions.RequestException as e: print(f'CSVファイルのダウンロード中にエラーが発生しました: {e}')

Google Colabの実行に関しては、以下の項目を参照してください。

Google ColabからGoogle Drive内のcsvファイルを読み込む

seino
seino

Google Colabには生成AIが搭載されているので、コーディングも簡単です。

ノートブックのセルにある「コーディングを開始するか、AIで生成します」の「生成」をクリックしてください。

セル(Cell)というのは、以下の画像のようなノートブック上のブロックのことです。

生成」をクリックすると、セルの形が変わります。

ここに「Googleドライブ内にあるcsvファイルを読み込んで、列名Aのデータでヒストグラムを作成してください」と入力してください(コピペしてくださいね)。

この入力文を「プロンプト(Prompt)」と言います。

すると、あっという間にコードが生成されます。

Python
import pandas as pd
import matplotlib.pyplot as plt
from google.colab import drive
# Googleドライブをマウント
drive.mount('/content/drive')
# CSVファイルのパスを指定
file_path = '/content/drive/My Drive/your_csv_file.csv' # ここにファイルパスを書き換えてください
# CSVファイルを読み込む
df = pd.read_csv(file_path)
# 列Aのデータでヒストグラムを作成
plt.hist(df['A'], bins=10) # 'A'を実際の列名に置き換えてください
plt.xlabel('A')
plt.ylabel('Frequency')
plt.title('Histogram of A')
plt.show()

プロンプトはもう必要ないので、右側の「閉じる」を押してください。

まずは試しにコードを実行してみましょう。

セルの左上にある再生ボタンのようなマークを押してください。

すると「Googleドライブのファイルへのアクセスを許可しますか?」というポップアップが表示されます。

Googleドライブに接続」を選択してください。

新しいウィンドウが表示されます。

利用したいアカウントを選択してください。

さらに画面が遷移します。「次へ」を選択してください。

Google Drive for desktopがアクセスできる情報を選択してください」と表示されます。

すべてを選択」して「続行」してください。

そしてGoogle Colabの画面に戻ってください。

セルが実行された結果を見ることができます。

何やらエラーが発生していますね。

次はこのエラーを修正してみましょう。

コードを修正してグラフを作成しよう

ここまでの作業が結構長くなりましたね。ちょっと整理しましょう。

データのダウンロード

diabetes.xlsxをダウンロードしました。

データの確認と変換

diabetes.xlsxにどんなデータが記述されているのかをざっと確認しました。

Googleスプレッドシートを使って、.xlsxファイルを.csvファイルに変換しました。

Google Colabからcsvファイルを読み込む

生成AIを活用して、Google Colabからdiabetes.csvファイルを読み込むためのコードを書いてもらいました。

ただしエラーが発生しています。

コードを修正する

いまココ!!

グラフを表示させる

生成AIを使ってcsvファイルのデータを可視化する。

エラーの修正もAIにお願いしよう

さてここまでの作業をまとめると、「Googleドライブ内のcsvファイルを読み込もうとしたらエラーが出た」という感じですね。

でもここもAIに助けてもらいましょう。「エラーの説明」をクリックしてください。

すると以下のように、解説文が表示されます。

英語でわかりにくいので、日本語で解説してもらいましょう。

プロンプト入力部分に「日本語で解説してください」と入力してください。

すると以下のように、日本語で解説してくれます。

seino
seino

すごいですね

解説を読むと「ファイルパスが間違っている」という指摘を受けました。

コードでは、/content/drive/My Drive/your_csv_file.csvを読み込むことが書かれているのに、「そこにcsvファイルがないよ」というエラーのようですね。

では、正しく修正してもらいましょう。

diabetes.csvファイルは、「Pythonによるデータ分析入門 > 初級編 > 000_データの読み込みとグラフ化」フォルダにあるんでしたね。その旨をAIに伝えてみましょう。

seino
seino

修正してほしい内容をそのままAIに伝えてあげればOKです

プロンプトに「マイドライブ > Pythonによるデータ分析入門 > 初級編 > 000_データの読み込みとグラフ化 > diabetes.csv を読み込むようにコードを修正して下さい」と入力しましょう。

上記のようにコードが修正されました。

しかも賢いことに、「列名Aがないから、Glucoseにしてみたよ」という修正まで勝手にやってくれています。

AIが作ってくれたコードをコピーしましょう。右上のアイコンをクリックするとコピーされます。

コピーした内容をセルにペーストしてください。

ペーストすると上記のようになります。

下記は実際のコードです。必要に応じてコピペしてください。

Python
import pandas as pd
import matplotlib.pyplot as plt
from google.colab import drive
# Googleドライブをマウント
drive.mount('/content/drive')
# CSVファイルのパスを指定
file_path = '/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv'
# CSVファイルを読み込む
df = pd.read_csv(file_path)
# 列名Aのデータでヒストグラムを作成
# 'A'を実際の列名に置き換えてください。
# diabetes.csv には 'A' という列名はないので、適切な列名に置き換えてください。
# 例えば、'Glucose' 列のヒストグラムを作成する場合は、以下のように変更します。
plt.hist(df['Glucose'], bins=10)
plt.xlabel('Glucose') # x軸ラベルを変更
plt.ylabel('Frequency')
plt.title('Histogram of Glucose') # タイトルを変更
plt.show()

セルを実行してください。

するとしっかりとヒストグラムが表示されます。

seino
seino

自分でコードを書かずにデータの読み込みとグラフ化ができましたね

チェックポイント2. FileNotFoundErrorが解消されないとき
seino
seino

どうやってもグラフが表示されない!!という人は、以下を確認してください。

csvファイルが存在しているのか

「ダウンロードしたつもりになっている」パターンですね。以下のコードで、csvファイルの有無を確認しましょう。

Python
from google.colab import drive
import os
# Googleドライブのマウント
drive.mount('/content/drive')
def find_csv_files(root_dir): """ 再帰的にディレクトリを走査し、.csvファイルのパスをリストで返す関数。 Args: root_dir: 走査を開始するルートディレクトリのパス。 Returns: .csvファイルのパスを含むリスト。 """ csv_files = [] for dirpath, dirnames, filenames in os.walk(root_dir): for filename in filenames: if filename.endswith('.csv'): csv_files.append(os.path.join(dirpath, filename)) return csv_files
# マイドライブのルートディレクトリ
my_drive_root = '/content/drive/MyDrive'
# .csvファイルのパスを取得
csv_file_paths = find_csv_files(my_drive_root)
# .csvファイルのパスを表示
if csv_file_paths: print("csvファイルが見つかりました:") for file_path in csv_file_paths: print(file_path)
else: print("マイドライブにcsvファイルは見つかりませんでした。")

「マイドライブにcsvファイルは見つかりませんでした」と表示される方は、そもそもGoogle Drive内にcsvファイルが存在していません。チェックポイント1に戻ってください。

またよくあるのが、アカウントが異なっているパターンです。

お使いのGoogleドライブと、Google Colabのアカウトは一致していますか?

画面右上のアイコンを確認してくださいね。

フォルダの構造が正しいか

FileNotFoundErrorを修正できないときは、フォルダの階層構造が間違っていたり、余計な半角スペースが入っていたりします。

上記の「csvファイルが存在しているのか」のコードを実行すると、csvファイルのファイルパスが表示されます。

このファイルパスが正しいものです。自分が思う「こういうファイルパスのはずだ」と認識がズレているかもしれません。正しい方を使って、以下のようにコードを修正してください。

Python
# CSVファイルのパスを指定
# 正しいファイルパスに修正してください。
file_path = '/content/drive/My Drive/Pythonによるデータ分析入門/初級編/000_データの読み込みとグラフ化/diabetes.csv'

「自分が思っていたパスと違っていた」という場合は、チェックポイント1に戻って、コードを実行すると本記事と同じフォルダ構造を作成することができます。

列名を’A’から’Glucose’に修正しているか

Python
plt.hist(df['Glucose'], bins=10)
plt.xlabel('Glucose') # x軸ラベルを変更

上記のようにdf['Glucose']と修正してください。df['xxx']xxxの部分に存在しない列名を入力するとKeyErrorが発生しますので、スペルミスがないように修正してください。

まとめ

長くなりましたが、手順は単純です。

エクセルのデータをcsv形式にして、Google Colabで読み込み、グラフ化したということです。

生成AIに手伝ってもらったので、「コードの意味を理解する」というところまでは到達していませんが、「使う」ことはできましたね。

ここから少しずつ理解を深めていきましょう。

また、本記事で使用したコードは以下からダウンロードできます。

追加のデータでおさらいしてみよう

新しいデータを用意しましたので、以下からダウンロードしてください。

はじめからcsv形式にしてあるので、ご自身のGoogle Driveにアップロードするところからはじめてください。

データの詳細は以下のサイトを参照してください。

プロンプトを変えてみるとどんなコードが生成されるのかも試してみてください。

グラフにも色々な種類があります。今回は度数分布(ヒストグラム)を作成しましたが、散布図などもあるので試してみてくださいね。

]]>
https://meducode.com/data-science/import-data/feed/0
ウェブブラウザの分割表示でプログラミング学習を効率化しようhttps://meducode.com/tips/web-browser-tab-splitting/https://meducode.com/tips/web-browser-tab-splitting/#respondSun, 10 Nov 2024 02:40:50 +0000https://meducode.com/?p=211

プログラミング学習をすると「同時に2つのウェブサイトを表示したい」と思うことがあります。 例えば、左側に解説記事、右側にGoogle Colabのページで作業したいときなどですね。 もちろん、ウェブブラウザのウィンドウを ... ]]>

なぜ分割表示をしたくなるのか

プログラミング学習をすると「同時に2つのウェブサイトを表示したい」と思うことがあります。

例えば、左側に解説記事、右側にGoogle Colabのページで作業したいときなどですね。

もちろん、ウェブブラウザのウィンドウを2つ開く方法もありです。
「よりすっきり表示させる」ために分割表示はおすすめです。

Arcで分割表示をする方法

Arcは、ブックマークバーとタブを同じものとして扱う独特の表示形式です。

以下の画像はArcの画面です。ブックマークバーとタブバーが別々ではなく、同じものとして用意されています。

一方で、以下の画像はChromeのブックマークバーとタブバーです。

タブは「今開いているページの集まり」としてウィンドウ上部にあります。

同じように、ブックマークバーはブックマークバーとして下部にあります。

seino
seino

一般的にはこのようにタブとブックマークは別々に管理されています。

さて、話を戻します。

Arcで分割表示する方法は、簡単です。

表示させたいブックマーク項目を右クリックして「Open in Split View(あるいはAdd Split View)」を押してください。

こんな感じで表示されます(GoogleとWikipedia)。

そして分割表示しているページ同士は、ブックマークバーのアイコンも並んで表示されるようになります。

もし上下に分割したい場合は、ブックマークを右クリックして「Convert to Vertical Split View」を押してください。

するとこのように上下に画面分割されます。

分割表示を解除したい場合は、「Separate All Tabs」を押してください。

Floorpで分割表示する方法

Floorpで分割表示する方法は、追加したい方のタブを右グリックして「分割ビューで開く」を押してください。

すると以下の画像のように分割表示されます。

2024年11月10日時点で検証したところ「分割ビューの解除」がうまく機能しませんでした。
他サイトでは右クリックから「分割ビューを閉じる」を押すと解除されるとのことです。

Vivaldiで分割表示する方法

Vivaldiで分割表示をするためにはまず最低2つのタブを開いてください。下のような状態です。

macOSの場合はcommandを押しながら、Windowsの場合はcontrolを押しながら、追加したい方のタブをクリックしてください。

すると上の画像のように点線で選択範囲が表示されます。

この状態でタブを右クリックして「2個のタブをタイル表示する」を選択してください。

すると上記のように分割表示されます。

解除したい場合は、右クリックから「すべてのタイルを解除」あるいは「このタブをタイル表示から取り除く」を選択してください。

上記のように3つ以上のタイル表示も可能です。

seino
seino

ノートPCなど、画面の広さを有効利用したいときに分割表示をうまく活用してください

今回は、ウェブブラウザの分割表示の設定方法を紹介しました。

分割画面を上手に活用して、効率的なプログラミング学習をしましょう。

]]>
https://meducode.com/tips/web-browser-tab-splitting/feed/0
Google DriveとGoogle Colabを準備しようhttps://meducode.com/preparation/google-drive-colab/https://meducode.com/preparation/google-drive-colab/#respondSat, 09 Nov 2024 08:28:05 +0000https://meducode.com/?p=139

Google Driveはクラウドストレージです。自分のパソコンの外にあるデータの保管場所と考えてください。 15GBまでは無料です。講義資料やレポートを保存しておけば、スマホからも見ることができますよ。 Google ... ]]>

Google DriveとColabって何?

Google Driveはクラウドストレージです。自分のパソコンの外にあるデータの保管場所と考えてください。

15GBまでは無料です。講義資料やレポートを保存しておけば、スマホからも見ることができますよ。

Google Colabはウェブブラウザ上でプログラムを書いたり、実行できるサービスです。ただし全てのプログラミング言語というわけではなく、Python(パイソン)が主に使えます。

PythonはデータサイエンスやAIの分野でよく利用されているので、Google Colabはこの分野でのプログラミング学習には最適です。

Google Colabも基本的には無料です。「もっと性能をあげたい」というときに有料プランを検討してください。

Google Colabを使ってみよう

いよいよプログラミング学習に入りましょう。

本ウェブサイトではPythonの学習をメインにしており、Pythonの学習にはGoogle Colabというサービスが最適です。

seino
seino

Googleアカウントを持っていない場合は以下の記事を参考にしてください

まずはGoogleアカウントにログインしてください。

右上のメニューボタンを押すとGoogleが提供する各種サービスを見ることができるようになります。アプリランチャーといいます。

Google Driveは「ドライブ」と書いてあるアイコンのことです。

Googleアカウントを作った時点で、無料の15GBのストレージが付与されています。

Google Driveを見てみよう

上記のアイコンを選択すると、Google Driveのページに飛びます。

Google Driveに入ると上記のような画面が見えるはずです。

私の場合はまだ何も保存していないのでイラストが見えますが、データを保存している場合はファイルの一覧が見えるはずです。

Google Driveはよく使うのでブックマークしておいてくださいね。

Google Driveの規約では、Googleはユーザーのドライブの中身を見たり、利用できたりするようになっています(サービスの改善やセキュリティのためと書いてはいますが)。そのため個人情報が含まれるデータをアップロードしてはいけません。研究データ、院内データの取り扱いには十分に注意してください。

Google Colabを見てみよう

Google Colabは、Google Driveのようには見ることができません(Googleアプリランチャーからは見れません)。

直接Google Colabのページに行きましょう。

はじめは上記のような画面が見えるはずです。

Colaboratoryへようこそ」を選択するか、ポップアップで表示されている上記のウィンドウ外をクリックしてください。

ポップアップウィンドウが消えて、上記のような画面になります。

seino
seino

Google Colabのページもブックマークしてくださいね!!

ノートブックを複製しよう

Google Colabでは、1つのファイルを「ノートブック」と呼んでいます。

今見えているのは、Googleが作成したノートブック(「Colabへようこそ」という内容のノートブック)です。

このノートブックはあくまでGoogleが作ったものであり、このファイルも自分のものではありません。

seino
seino

「他人のノートを見せてもらっている」感じです

自分用のノートブックとして保存する」ために、このノートブックをコピーしましょう。

左上の「ファイル」の「ドライブにコピーを保存」を押してください。

ここでいう「ドライブ」というのが、あなたのGoogle Driveのことです。

私の環境では「Colabを新しいブラウザウインドウで開けませんでした」というエラーメッセージが表示されました。

気にしなくてOKです。右下の「新しいタブで開く」を押してください。

すると一見全く同じ画面に遷移します。

でもよく見ると、ノートブック名が「Colaboratoryへようこそ のコピー」となっています。

しかも、ノートブック名の前にGoogle Driveのアイコンが入っていますね。これが「自分のドライブにあるノートブックである」という目印です。

ちなみにもとのノートブックは以下のとおりです。

seino
seino

見た目がほぼ一緒なのでよく確認してください

Google Driveを確認する

ここまでの作業でGoogle Colabでノートブックを複製し、自分のGoogle Driveに保存するところまで完了しました。

この状態で、Google Driveのページに戻りましょう。すでにGoogle Driveのページを開きっぱなしにしていたら、ページを更新してください(Ctrl + R or Cmd + R)。

先ほどまでは存在していなかったノートブックがドライブに保存されていることがわかります。

基本的にGoogle Colabで作成したファイル(= ノートブック)は、自動的にGoogle Drive内のColab Notebooksフォルダに保存されます。

確認のため左側のメニューにある「マイドライブ」を選択してください。

マイドライブ」のページは、保存されているファイル一覧を見ることができます。

ちゃんと「Colab Notebooksフォルダ」がありますね。フォルダ名をダブルクリックしてください。

マイドライブ > Colab Notebooks」と表示が変わり、「Colaboratoryへようこそ のコピー」ファイルが見えるようになりました。

この「 > 」を使った表記は、フォルダの階層を示しています。つまり「マイドライブ」フォルダの中に「Colab Notebooks」フォルダがあることを示しています。

「Colaboratoryへようこそ のコピー」ファイルをダブルクリックしてください。

すると自動的にGoogle Colabページに遷移して、ノートブックの内容を閲覧・編集することができます。

ここまででGoogle DriveとGoogle Colabの設定は完了です。これからいよいよPythonプログラミングを始めていきましょう!!

]]>
https://meducode.com/preparation/google-drive-colab/feed/0
プログラミング学習用のウェブブラウザを準備しようhttps://meducode.com/preparation/webbrowser/https://meducode.com/preparation/webbrowser/#respondSat, 09 Nov 2024 06:41:05 +0000https://meducode.com/?p=141

ウェブブラウザとは、インターネット上のウェブサイトを閲覧するためのアプリです。単にブラウザということもありますが、パソコン内のファイルを探すアプリもブラウザと呼ぶので区別しましょう。 Windowsの場合はEdge(昔は ... ]]>

seino
seino

今回はウェブブラウザの準備をしましょう

ウェブブラウザって何?

ウェブブラウザとは、インターネット上のウェブサイトを閲覧するためのアプリです。単にブラウザということもありますが、パソコン内のファイルを探すアプリもブラウザと呼ぶので区別しましょう。

Windowsの場合はEdge(昔はInternet Explorer)、Macの場合はSafariがプリインストールされているウェブブラウザです。

パソコンをいじらない人はあまり知らないかもしれませんが、実はウェブブラウザにはたくさん種類があります。

本記事では、プログラミング学習のためのウェブブラウザについて解説します。

王道のブラウザ4選

Windows標準のMicrosoft Edge(エッジ)

Edge は、Windowsマシンの標準ウェブブラウザです。初期設定のまま使っていれば、Edgeでインターネット上のウェブページを閲覧しているはずです。

なおEdgeは、Macでも使えます。

以前は、Windows標準のウェブブラウザはInternet Explorer(インターネット・エクスプローラー)でした。技術的に古く、現在ではEdgeに置き換わっています。

Mac標準のSafari(サファリ)

Mac標準のウェブブラウザはSafariです。iPhoneユーザーも使っているかもしれません。

Googleが作ったChrome(クロム)

Chromeは、Googleが開発したウェブブラウザです。世界中で最大のシェア(約65%)を誇ります。

そもそもGoogleと言えばインターネット検索ですよね。そのためウェブページの制作上でもChromeの利用が標準になっています。

セキュアで高速なFirefox

Mozilla(モジラ)というNPOが開発したオープンソースのウェブブラウザです。玄人好みのウェブブラウザと言えるかもしれません。

Chromeと比べてメモリ使用量が少なく、性能の低いパソコンでもキビキビ動くので、開発者に好まれています。

プログラミング学習のためにインストールすべきウェブブラウザ2選

seino
seino

単に僕の好みです

Chromium系ウェブブラウザArc

Arc(アーク)は、Chromium(クロミウム)系のブラウザです。

Chromium系というのは、Google Chromeの基本構造を踏襲したブラウザ群を指します。

2023年に話題になったインターネット上のサービスのうち、Chat GPTの次に有名なものです。日本ではあまり話題になってはいませんが、世界的に流行しました。

プログラミング学習で重要なのは「新しい話題のものを使ってみる」ことです。

Arcを使いこなす必要はありません。プログラミング学習の機会にインストールしてみましょう。

Firefox系の国産ブラウザFloorp

Floorp(フロープ)は、日本の開発者コミュニティAblazeにって開発されたFirefox系のブラウザです。

強いプライバシーの保護と高いカスタマイズ性が特徴です。

先に紹介したArcと共にこちらもインストールしてみてください。

なぜ2つのウェブブラウザをインストールするのでしょうか?
上記では、Chromium系とFirefox系を紹介しました。
実はChromiumとFirefoxは異なる仕組みで動いています。
何かトラブルが起きた際に比較するため、異なる系統のブラウザを準備しておくのです。

拡張機能をインストールしよう

ウェブブラウザには、拡張機能(extension, エクステンション)と呼ばれる追加機能があります。この機能は世界中の開発者や企業が独自に作成した機能で、何か特定の目的のために作られています。

ここではプログラミング学習に役立つであろうものをピックアップしました。最低限に絞りましたので、とりあえずインストールしてみましょう。

拡張機能のインストール方法

Chromium系のブラウザであれば、「ツール」の「拡張機能」を押してください。

もしくは単にchromeウェブストアに飛ぶのでもOKです。

Firefox系では「ツール」の「アドオン」を押してください。

Firefox系も同じようにADD-ONSページでもOKです。

パスワード管理拡張機能Bitwarden

パスワードの使い回しは危険ですが、たくさん用意しても管理が大変です。これらの管理をアプリに任せましょう。

Bitwardenを使うとユーザーは「マスターパスワード」と呼ばれる1つのパスワードを覚えておきさえすればよくなります。

ウェブサイトごとのパスワード生成もBitwardenがしてくれますし、その管理や自動入力もやってくれます。

ChatGPTでの誤送信を防ぐChatGPT Ctrl+Enter Sender

プログラミング学習において、ChatGPT等のチャット形式の生成AIの利用は必須です。

しかし私たちのような日本語ユーザーは、ひらがなで入力して、その後に漢字やカタカナに変換します。このとき「変換OK」の意味でEnterキーを押しますが、ChatGPTの画面ではEnterを押した瞬間に入力内容が送信されます。

これを防ぐのがChatGPT Ctrl+Enter Senderです。コントロール(Ctrl)キーと、Enterキーを同時に押さないと、入力内容が送信されなくなります。

seino
seino

伝わらないでしょうが、地味に便利なんですよ!!

以上です。この2つはぜひインストールしてくださいね。

]]>
https://meducode.com/preparation/webbrowser/feed/0
本サイトへのユーザー登録の方法https://meducode.com/preparation/user-registration/https://meducode.com/preparation/user-registration/#respondThu, 07 Nov 2024 10:53:26 +0000https://meducode.com/?p=125

本ウェブサイトでは、ユーザーのみが記事にコメントを残せるように設定してあります。 Googleのアカウントを作成するところから解説しており、その手順の確認もあり、わざわざユーザー登録をしていただく設定にしました。 記事ペ ... ]]>

ユーザー登録について

本ウェブサイトでは、ユーザーのみが記事にコメントを残せるように設定してあります。

Googleのアカウントを作成するところから解説しており、その手順の確認もあり、わざわざユーザー登録をしていただく設定にしました。

ログイン

記事ページの下部にある「コメントを投稿するにはログインしてください」のところへ進んでください。

ログイン」をクリックすると画面が遷移します。

ログイン画面は以下のとおりです。「登録」を選択してください。

登録画面に遷移します。

ユーザー名」と「メール」を入力してください。

ユーザーは、コメント欄等で公開されるものです。公序良俗に反しないものを記入してくださいね。

登録が済むと、パスワード設定のリンクが自動的にメールで送られます。
ただしGoogleは、この登録メールを迷惑メールと判定してしまいます。Gmailの「スパム」ボックスの中身も確認してください。

パスワードの設定

本ウェブサイトから届いたメールのリンクを踏むと、下記のページに遷移します。

ウェブサイト側でパスワードを生成します。

このままで良ければ、必ず先にパスワードをコピーしてから「パスワードを保存」を押してください。

別のパスワードが良ければ「パスワードを生成」を押し、新しいパスワードでよければ「パスワードを保存」を押してください。

あるいは直接パスワードを打ち込んでから「パスワードを保存」でもOKです。

ここまででユーザー登録が完了です。そのままログインしてみてください。

ログインするとユーザーのページに遷移します。

必要に応じて各種設定ができます。

ここでGravatarで設定したアバター画像が自動的に表示されるはずです(詳細は以下参照)。

これであなたも本ウェブサイトにアバター画像つきでコメントができるようになりました。

積極的にコメントしてみてくださいね。

]]>
https://meducode.com/preparation/user-registration/feed/0
Gravatarに自作アバターを登録しようhttps://meducode.com/preparation/gravatar/https://meducode.com/preparation/gravatar/#respondThu, 07 Nov 2024 10:14:01 +0000https://meducode.com/?p=106

Gravatarは、「デジタルパスポート」と呼ばれるサービスです(実際のパスポートのように公的なサービスではありません)。 Instagram, X, note などのSNSは、プロフィールを設定する必要があります。でも ... ]]>

Gravatarって何?

Gravatarは、「デジタルパスポート」と呼ばれるサービスです(実際のパスポートのように公的なサービスではありません)。

Instagram, X, note などのSNSは、プロフィールを設定する必要があります。でも1つ1つのサービスで同じことをするのはめんどくさいですよね。

ここでGravatarの出番です。そのサービスがGravatarに対応していれば、自動的にプロフィールの内容を取得してくれます。ユーザーはGravatar上で自分のプロフィールを編集すれば、Gravatarと結びつけた各種のサービスでユーザーの情報が更新されます。

ここに作成したアバターを登録しておきましょう。

なおアバターの作成方法は以下の記事を参考にしてください。

このウェブサイトは、Gravatarに対応しています。
記事にコメントをしてくれたユーザーのアイコンが表示されるようになっています。

Gravatarアカウントを作成する

Gravatarのページで「今すぐスタート」を押してください。

登録したいメールアドレスを入力してください。

なおメールアドレスの作成方法は以下の記事を参考にしてください。

メールアドレスを入力すると認証コードの入力が求められます。

届いたメールを確認して、認証コードを入力してください。

Gmailの確認方法

Googleアカウントを作っただけの状態では、メールはあなたのパソコンには届きません。

ウェブ上でメールの確認をしましょう。

まずはGoogleアカウントにログインしてください。

画面右上のGoogleアプリのアイコンを押してください。

真ん中ですね。アプリ一覧の中にGmailがありますので、選択してください。

初回ログイン時には設定が要求されますので、どちらかを選んでください(どちらでも大差ありません)。

Gravatarに戻ってアカウント作成の続き

メールボックスを確認すると、上記のようなGravatarからメールが届いているはずです。

ここまでの作業で時間が経ちすぎているとワンタイムコードが無効化されているので、Gravatarのページ戻ってコードを再送しましょう。

無事にログインできると以下の画面に遷移します。

画像をアップロード」を押してください。

画像がアップロードされると、画像の調整の画面に切り替わります。

調整が済んだら、画面右上の「DONE」を押してください。

Gravatarの設定ページを確認

画像をアップロードすると、そのままGravatarにログインされた状態になります。

左側のメニューから「アバター」を選んでください。

アバター画像が登録されていると以下のような画面に切り替わります。

これでGravatarへのアバターの登録は完了です。

本ブログはGravatarに対応しています。
本ブログにユーザー登録をすると、記事にコメントできるようになります。
その際、Gravatarに登録した画像がコメント欄に表示されます。
登録は無料です。ぜひコメントしてみてくださいね。

]]>
https://meducode.com/preparation/gravatar/feed/0
プログラミング学習用にアバターを作成しようhttps://meducode.com/preparation/create-avatar/https://meducode.com/preparation/create-avatar/#respondThu, 07 Nov 2024 09:00:57 +0000https://meducode.com/?p=83

アバター(avatar)とは「化身」という意味ですが、ここでは「インターネット上のキャラクター」くらいの意味でとらえてください。単に「ユーザーアイコン」と考えてもOKです。 上記の記事でGoogleアカウントを作成しまし ... ]]>

アバターって何?

アバター(avatar)とは「化身」という意味ですが、ここでは「インターネット上のキャラクター」くらいの意味でとらえてください。単に「ユーザーアイコン」と考えてもOKです。

上記の記事でGoogleアカウントを作成しましたが、ユーザーアイコンが未設定でした。

未設定の場合は、以下のようにイニシャルで表示されるだけです。ちょっと味気ないですね。

アバターを作って、アイコンの設定もしていきましょう。

おすすめのアバター作成サービス

私のおすすめは以下のウェブサイトです。

上記のサイトからキャラクターを作成していきましょう。

アバターの作成

以下の作業は、似顔絵メーカーCHARATで説明します。

最終的にキャラクターの画像ができあがればOKです。キャラを作らずにご自分の写真を使ってもOKですよ。

まずは自分が作りたいキャラのイメージを選択してください。

私は「シンプルで可愛い似顔絵」を選択しました。

他にもたくさんあるので好きなものを選んでくださいね。

画面が遷移して、ギャラリーが表示されます。さらに下にスクロールしてください。

下に進むと「遊び方」の見出しがあります。

新しくはじめる」を選択してください。

画面が遷移し、初期設定画面が表示されます。

画面下の「face」「hair」「wear」「deco」から各パーツを変更できます。

自分の好みになるように調整してください。

調整が終わったら、「FINISH」を押してください。

完成した画像を「ダウンロード」してください。

Googleアカウントに作成した画像を設定しよう

Googleアカウントにログインしてください。

画面右上のユーザーアイコン(私の場合は「Y」です)をクリックしてください。上記のような画面になります。

編集マーク (鉛筆アイコン)を押してください。

プロフィール写真を追加」から作成したアバター画像をアップロードしてください。

パソコン内」を選択してください。

パソコンからアップロード」を選択してください。

アップロードが完了すると、以下のような画面に遷移します。

左上の「」を押して、ポップアップを閉じてください。

きちんと設定されていると、Googleアカウントにログインした際にユーザーアイコンに作成したアバターが表示されるようになります。

これでアバターの作成とGoogleアカウントへの設定は完了です!!

]]>
https://meducode.com/preparation/create-avatar/feed/0
プログラミング学習用のGoogleアカウントをつくろうhttps://meducode.com/preparation/google-account/https://meducode.com/preparation/google-account/#respondThu, 07 Nov 2024 07:23:31 +0000https://meducode.com/?p=59

Googleアカウントがあると、プログラミング学習に便利だからです。 プログラミングに関する様々なサービスへの登録、ウェブセミナーへの参加などにこのアカウントを使いましょう。 仕事やショッピングのために使っているアカウン ... ]]>

なぜGoogleアカウントが必要なのか

Googleアカウントがあると、プログラミング学習に便利だからです。

プログラミングに関する様々なサービスへの登録、ウェブセミナーへの参加などにこのアカウントを使いましょう。

仕事やショッピングのために使っているアカウントとは別のアカウントを用意しておくと情報の管理もしやすいです。

ウェブブラウザで “Google” と検索

まずは、「Google」と検索します。

上のような検索結果が表示されます(時期やブラウザによって多少見え方が違うかもしれません)。

ログイン」を押してください。

* ウェブブラウザの設定によっては、「Google」と検索しなくても下の画像のように「ログイン」が見えている場合もあります。この右上にある「ログイン」ボタンを押してもOKです。

画面が遷移すると以下の画面に切り替わります。

ここでも右上にある「ログイン」ボタンを押してください。

アカウント作成に進む

ログイン画面は以下の通りです。これも設定によっては、見た目が変わるかもしれません。

アカウントを作成」を押してください。

メニューが表示されます。「個人で使用」を選んでください。

画面が切り替わって、「Googleアカウントを作成」と表示されます。

「姓」と「名」を入力してください。

本名である必要はありませんが、ここで入力した氏名はメールを送った相手に表示されます(設定で変えられますが)。あまりにおかしい名前は入力しないでください。

生年月日の入力

氏名を入力すると、次は生年月日の入力画面に遷移します。

生年月日と性別を入力してください。

生年月日や性別も実際の情報である必要はありませんが、未成年にならないようにしてください。あとから変更はできますが、免許証等を提出しなければならず本当に面倒です。

オリジナルのメールアドレスを考えよう

先ほど入力した氏名をもとにして、初期設定のメールアドレスの候補が表示されます。

自分でGmailアドレスを作成」を選んでください。

ここに自分が使いたいメールアドレスを入力してください。ピリオドも使用できます。

ただし「すでに使われているメールアドレス」の場合は、以下のようなエラーが返ってきます。

同姓同名だけではなく、動物、食べ物もすでに使われていることが多いです。

メールアドレスが思いつかないときには、以下の方法を試してください。
・Leet表記を使う:”A”を”4″, “E”を”3” など似た形に変える。
・異なる言語を使う:”sky” ではなく、”sora” にする。
・誕生日を加える:”suzuki.ichiro” ではなく、”suzuki.ichiro.1022″ にする。
・複数の単語を加える:”ichiro” ではなく、”ichiro.study.programming” にする。

パスワードの設定

無事にメールアドレスが決定したら、パスワードの設定に移りましょう。

好きなパスワードを設定してください。

つぎに「再設定用のメールアドレスを追加」の画面に遷移します。何らかの理由で現在作成中のGoogleアカウントにログインできなくなったときのために、別のメールアドレスを設定します。

もし他にメールアドレスがあれば、設定しておくと良いでしょう。

ここまで来たらほぼ完了です!!

プライバシーと利用規約」に「同意」してください。

画面が遷移すると、作成したGoogleアカウントにログインした状態になっています。

これでGoogleアカウントの作成は完了です。

アカウント作成してログインすると

初回ログイン時にはさらなる設定を求められますが、必要に応じて設定を進めてください。

]]>
https://meducode.com/preparation/google-account/feed/0