Pythonとsklearnを使ってパーキンソン病の検出をする方法

スポンサーリンク

こんにちは、学習者の皆さん。今日はPythonを使って、事前に取得した情報をもとにパーキンソン病を検出する基本的なMLモデルを構築します。

まず、パーキンソン病とモデルに使用するデータセットについて理解することから始めましょう。私たちのプロジェクトでは、parkinson.dataファイルを使用します。

パーキンソン病は、体の動きに影響を与える中枢神経系の疾患です。今のところ、この病気に対する実用的な治療法はありません。

スポンサーリンク

必要なライブラリのインポート

どのようなプロジェクトでも、最初のステップは必要なモジュールをすべてプロジェクトにインポートすることです。numpy、pandas、matplotlib などの基本的なモジュールは、それぞれデータの準備、読み込み、プロットのために必要です。

また、学習と精度の推定のために、いくつかのsklearnモデルと関数が必要です。最後に、私たちは xgboost ライブラリを使用する予定です。

XGBoostライブラリは決定木ベースのGradient Boostingモデルで、システムの速度と精度を向上させるために設計されています。

1
2
3
4
5
6
7
import numpy as np
import pandas as pd
import os, sys
from sklearn.preprocessing import MinMaxScaler
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

データセットの読み込み

次のステップは、先ほどダウンロードしたデータをコードファイルと同じフォルダにロードすることです。そのために、pandasモジュールを使用します。そのコードは以下の通りです。

1
2
3
4
dataframe=pd.read_csv('parkinsons.csv')
print("The shape of data is: ",dataframe.shape,"
"
)
print("FIRST FIVE ROWS OF DATA ARE AS FOLLOWS:
"
)
dataframe.head()

プログラムの出力はデータセットの最初の5行を表示し、合計24列、195点のデータから構成されます。次のステップは、ラベルとデータを互いに分離することです。

そのためのコードを以下に示す。ここでは、ラベル列は状態列です。

1
2
data=dataframe.loc[:,dataframe.columns!='status'].values[:,1:]
label=dataframe.loc[:,'status'].values

データの正規化

次のステップは、すべてのデータポイントを-1から+1までの間でスケーリングすることです。ここでは MinMaxScaler を使って特徴量を変換し、パラメータとして指定した範囲にスケーリングすることにします。fit_transform` 関数は、データをフィットさせてから変換/正規化するのに役立ちます。

ラベルはすでに0と1の2つの値しか持っていないので、ラベルのスケーリングは必要ありません。

1
2
3
Normalizing_object = MinMaxScaler((-1,1))
x_data = Normalizing_object.fit_transform(data)
y_data=label

Train-Test データの分割

次のステップは、80-20ルール(データの80%をトレーニング、残りの20%をテストに回す)に従って、データをトレーニングとテストに分割することです。

ここでは、sklearn モジュールの train_test_split 関数を使用して、同じことを実現する予定です。そのコードは以下の通りです。

1
x_train,x_test,y_train,y_test=train_test_split(x_data,y_data,test_size=0.2)

XGBClassifierの初期化とmodekの学習

私たちのデータは、XBGClassifierに学習させ、適合させる準備ができました。そのために、分類器オブジェクトを作成し、学習データを分類器に当てはめることになります。

そのためのコードを以下に示します。

1
2
model=XGBClassifier()
model.fit(x_train,y_train)

出力には分類器の学習情報が表示され、テストデータに対する予測を行い、精度を得る準備が整いました。

予測と精度を得る

次の最後のステップは、テストデータセットの予測値を取得し、モデルの精度を評価することです。これを行うためのコードを以下に示します。

1
2
predictions=model_obj.predict(x_test)
print(accuracy_score(y_test,predictions)*100)

このコードを実行した結果、モデルの精度は97.43%以上となり、非常に良い結果であることがわかりました。というわけで、これで完成です。私たちは独自のパーキンソン病分類器を構築しました。

まとめ

この記事では、様々な要因によって個人のパーキンソン病の存在を検出する方法について学びました。

このプロジェクトでは、高速かつ正確な検出のためにXGBClassifierを使用しました。このモデルは、97.43%以上の精度を達成し、素晴らしい結果でした。

お読みいただきありがとうございました。

タイトルとURLをコピーしました