LoginSignup
0
1

More than 3 years have passed since last update.

社内勉強会 機械学習入門(4.Pythonでプログラムを書いてみよう)

Last updated at Posted at 2019-08-23

今日は、いきなり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上で、上記のコードを書いて実行してみると、体重の入力をちゃんと求められましたね。
2019-08-23_13h03_04.png

次に入力してもらった体重と身長をもとにBMIを計算して出力する部分です。
実は、input関数によって得た入力は、文字列なので、weight、heightは、文字列型という扱いになっています。
文字例型のままですと、数値計算ができないので、型変換する必要があります。
(小数点数を扱うので、浮動小数点数型に型変換します。)

weight = float(weight)        # 文字列型から浮動小数点数型に型変換
height = float(height) / 100  # 型変換&単位をcmからmに変換 
bmi = weight / (height ** 2)  # BMI計算式
print(bmi)                    # 標準出力する組み込み関数

実行結果は、こんな感じです。(BMIの値がちゃんと出力されました。)

2019-08-23_13h42_13.png

プログラムを改良してみよう

更に「日本肥満学会の肥満度判定基準」に従い、"肥満度"も合わせて出力してみましょう。

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度)')

実行結果は、こんな感じです。(肥満度もちゃんと出力されました。)
2019-08-23_14h06_32.png

まとめ

今日は、Pythonで簡単なプログラムを書いてみました。
次回もPythonに慣れるため、もう少しプログラムを書いてみようと思います。

次回は、「5.続Pythonでプログラムを書いてみよう」です。
社内勉強会 機械学習入門(5.続Pythonでプログラムを書いてみよう)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1