今日は、いきなりPythonで機械学習のプログラムを書く前に「簡単なプログラム」を書いてみたいと思います。
題材
BMIを計算するプログラムです。
- 体重(kg)と身長(cm)を入力してもらい、計算した結果(BMI)を出力します。
- 計算式内の身長は、単位がメートル(m)なので、注意です。
BMI計算式: 体重(kg) ÷ 身長(m)の2乗
コードを書いてみよう
Python仮想環境を有効化し、「jupyter notebook」を起動しましょう。
$ cd C:\ml-intro
$ env\Scripts\activate.bat
$ jupyter notebook
まずは、体重と身長を入力してもらうためのコード
weight、height という変数にinput関数(あらかじめ用意された組み込み関数)の結果を代入していますね。
Pythonの場合、変数は、名前(変数名)を決めるだけで、変数の型については、特に決めません。
weight = input('体重(kg)を入力:')
height = input('身長(cm)を入力:')
jupyter notebook上で、上記のコードを書いて実行してみると、体重の入力をちゃんと求められましたね。
次に入力してもらった体重と身長をもとにBMIを計算して出力する部分です。
実は、input関数によって得た入力は、文字列なので、weight、heightは、文字列型という扱いになっています。
文字例型のままですと、数値計算ができないので、型変換する必要があります。
(小数点数を扱うので、浮動小数点数型に型変換します。)
weight = float(weight) # 文字列型から浮動小数点数型に型変換
height = float(height) / 100 # 型変換&単位をcmからmに変換
bmi = weight / (height ** 2) # BMI計算式
print(bmi) # 標準出力する組み込み関数
実行結果は、こんな感じです。(BMIの値がちゃんと出力されました。)
プログラムを改良してみよう
更に「日本肥満学会の肥満度判定基準」に従い、"肥満度"も合わせて出力してみましょう。
BMI | 肥満度 |
---|---|
18.5未満 | 低体重(やせ) |
18.5以上、25未満 | 普通体重 |
25以上、30未満 | 肥満(1度) |
30以上、35未満 | 肥満(2度) |
35以上、40未満 | 肥満(3度) |
40以上 | 肥満(4度) |
BMIの値によって、肥満度の出力を変えたいので、ifおよびelif構文による条件分岐ですね。
上から順番に条件式を判定し、trueになったブロックを実行すると以降の条件式は判定されず、構文全体が終了する点がポイントですね。
if bmi < 18.5:
print('低体重(やせ)')
elif bmi < 25.0:
print('普通体重')
elif bmi < 30.0:
print('肥満(1度)')
elif bmi < 35.0:
print('肥満(2度)')
elif bmi < 40.0:
print('肥満(3度)')
else:
print('肥満(4度)')
実行結果は、こんな感じです。(肥満度もちゃんと出力されました。)
まとめ
今日は、Pythonで簡単なプログラムを書いてみました。
次回もPythonに慣れるため、もう少しプログラムを書いてみようと思います。
次回は、「5.続Pythonでプログラムを書いてみよう」です。
社内勉強会 機械学習入門(5.続Pythonでプログラムを書いてみよう)