Python matplotlib 練習問題

python

【Python】matplotlib練習問題【Kaggleより】

2020年4月1日

こんにちは。産婦人科でAIエンジニアのとみー(@obgyntommy)です。

 

今回はmatplotlibの練習問題になります。matplotlibについては以下の記事で復習しましょう。

 

関連記事
python matplotlib 使い方 グラフ
【Python】matplotlibの使い方【基本から応用まで】

続きを見る

 

また、matplotlibの公式ドキュメントはこちらを参照してください。

 

matplotlib練習問題|使用するデータ

Python matplotlib 練習問題

UCIが提供している乳癌の診断データを使用します。

 

データの大元はUCIのBreast Cancer Data Set です。

 

今回は、導入のしやすから、「scikit-learn」にあるデータを使います。

 

ライブラリインストールされていない方は、インストールしてください。

In[]

 

matplotlib練習問題|データの準備

Python matplotlib 練習問題

まずはデータの準備をします。

 

下記の4つのデータを使ってグラフを描画してデータの特徴を捉える練習をしましょう。

  • diagnosis: 乳房組織の診断 0=悪性、1=良性
  • radius_mean: 中心から境界までの平均距離
  • perimeter_mean: 腫瘍のコアの平均サイズ
  • mean area:平均面積

ライブラリとデータ読み込み

下記を実行してください。

In[]

Out[]

この結果が示しているのは、以下です。

 

データは 569 つずつあります。

 

更に、全データの数と種類も確認します。

In[]

Out[]

この結果からは30項目のデータがある事が分かります。

 

この課題を完了した後も、データを自習で使ってみてください。

 

matplotlib練習問題|課題で作成するグラフの種類

Python matplotlib 練習問題

diagnosisの棒グラフ

diagnosisの

  • 0:悪性
  • 1:良性の数の棒グラフ

を作成してみましょう。

散布図と近似直線

以下、二つの散布図と近似直線を書いてみましょう。

 

グラフを見る際のTips

  • radius_m vs perimeter_m
  • radius_m vs area_m 

これを見ることでそれぞれの特徴量の関係性(相関の有無)がわかります。

ヒストグラム3つを並べて表示

対象データは下記3つです。

表示方法はいろいろあるので、見やすい方法試してみてください。

グラフを見る際のTips

  • radius_m
  • perimeter_m
  • area_m

これを見ることでデータの分布(正規分布かどうか)がわかります

 

ボックスプロットを3つ並べて表示する

  • $x$ 軸には診断結果であるdiagnosis(0:悪性、1:良性)
  • $y$ 軸には下記それぞれの項目の数値

 

グラフを見る際のTips

  • radius_m
  • perimeter_m
  • area_m

を見ることで診断結果と特徴量の関係性がわかります。

例えば、悪性の癌細胞は大きい!とかです。

 

matplotlib練習問題|補足

この課題では numpy の知識が必要になります。そこで、numpy でつまづいた方は以下の記事を参考にして下さい。

 

関連記事
Numpy 入門 Python
NumPyの入門【基礎から解説】

続きを見る

また、この課題のボックスプロットで np.where を頻用していますので、補足します。

 

np.wherewhere(どこ) を意味しています。要するに、np.where を使用する事で条件に一致する要素Noを取得することができます

 

データ多いと確認しにくいので、適当に用意した、悪性、良性の g_ng と面積の area データで確認していきましょう。

まず、np.where0:悪性 1:良性の要素No を取得します。

すると、以下の結果が得られました。

この要素Noのデータを取得したい場合は、area[要素No] でデータが取得できます。

 

そのまま渡してあげることで、0の場合の area データ、1の場合の area データが取得できます。

In[]

Out[]

この結果をリストに入れて、boxplot で表示してみましょう。

すると以下の図表を得る事ができます。

Python matplotlib 練習問題

np.where を使用する事で条件に一致する要素Noを取得することができましたね

 

matplotlib練習問題|演習

Python matplotlib 練習問題

再度、下記記事を参照して、それぞれのグラフを描画してみましょう。

 

参照記事は個別にコメントしてあります。

関連記事
python matplotlib 使い方 グラフ
【Python】matplotlibの使い方【基本から応用まで】

続きを見る

演習のJupyter notebookをご利用される方は演習(google driveリンク)を参照いただければと思います。

 

diagnosisの棒グラフ

In[]

Python matplotlib 練習問題

散布図と近似直線

In[]

Python matplotlib 練習問題

In[]

""" 「radius_m」と「area_m」を使って、散布図と近似直線を書いてください。 参考(近似直線の描いてみる):https://obgynai.com/matplotlib/#i-9 """

ヒストグラム3つを並べて表示

In[]

Python matplotlib 練習問題

ボックスプロットを3つ並べて表示

In[]

Python matplotlib 練習問題

 

matplotlib練習問題|解答

Python matplotlib 練習問題

解答例(google driveリンク)を参照いただければと思います。

 

diagnosisの棒グラフ

In[]

散布図と近似直線

In[]

 

ヒストグラム3つを並べて表示する。

In[]

ボックスプロットを3つ並べて表示させる。

In[]

 

今回の課題は以上となります。お疲れ様でした。

 

 

人気記事 機械学習は挫折しやすい【挫折が多い原因と挫折回避の方法を教えます】

人気記事 無料あり:機械学習エンジニアの僕がおすすめするAI(機械学習)特化型プログラミングスクール3社


-python
-, ,

Copyright© Tommy blog  , 2024 All Rights Reserved.