Python

Python始めの第一歩

s.fujii0909

機械学習においてPythonは 必須のプログラミング言語になります
また、Pythonは機械学習だけでなくネットからの情報を取得したり、Webサイトを作れたり、さまざまなアプリケーションで使われているプログラミング言語です
初心者にも とっつきやすい言語ですので、Pythonの基礎を勉強していきましょう

実行環境の準備

Google Colaboratory(Colab)使って、Pythonに慣れていきましょう
ページにアクセスして ノートブックから新規作成をクリックします

四則演算の実行

まずは電卓的な感じで使ってみます
四則演算(足す、引く、割る、掛ける)を試してみます
以下のコード(式)を入れてShift + Entherキーを押して実行してみてください
ただのEntherだと続けてコードを入力できる改行になります

10 * 10

100

コードが実行されて100という結果が得られたと思います
“*” は 掛け算を表しています
同様に “+ , – , * , / ” は、足し算、引き算、掛け算、割り算を表します

データの形式

Pythonで扱えるデータは数値、文字列、論理の3種類を覚えておけば大丈夫です
3種類覚れば、あとはこの3種類を拡張したものになっていきます

数値型

先ほどの四則演算で出てきた数値がまさに数値型になります
数値型には1, 10, 431と言った整数を扱う整数型 ( int型 )と
0.1, 3.141592など小数まで扱える浮動小数型( float型 )があります

Pythonの場合、int型、float型をあまり気にせず実行できます

文字列型

文字列型は”こんにちは”や”Hello”と言った文字を扱う型( str型 )になります
シングルクォーテーション(‘)もしくはダブルクォーテーション(“)で囲むと 文字列のデータが作れます
下記のように実行すると文字列が出力されます

"こんにちは"

‘こんにちは’

ブール型

ブール型は真偽を表す2つの値をとります
真のときはTrue、偽の時はFalseの値になります
主に下で紹介する while文 や if文 で使います

変数

先ほどの例では数値を直接実行しましたが、数値を毎回入力するのは非効率です
そんな時に変数という仕組みを使うと楽になります
例えば下記のような例を考えてみましょう

みかんを3個、りんごを4個買いました
みかん1個あたり80円、りんご1個当たり100円です
消費税は10%として合計金額を求めてみましょう

愚直に書くと下記のようなコードになると思います

(80 * 3 + 100 * 4) * 1.10

704.0

実際は、704.0は小数なので整数にする必要があると思いますが計算はできています
これが複数の会計処理をするのに毎回同じように入力するの大変ですよね
また、みかんの単価が80円から90円に値上げしたり、消費税が12%に変更になった時にも入力のミスをなくすために変数という箱に入れて楽をします

変数の使い方は下記のようにします

# みかんとりんごの単価(円)を設定
mikan_price = 80
apple_price = 100
# 消費税率
tax = 1.1

上の例のように “変数名 = データ” のような形で変数を定義していきます
また、コードに”#”をつけると、その行はプログラムとして実行しないコメントという機能が使えます
コメントは後から見返す場合や 他の人がコードを読む際に手助けになるので
めんどくさがらずにコメントを残すようにしましょう

先ほどと同様のみかん3個、りんご4個の合計額は下記のようなコードになります

(mikan_price * 3 + apple_price * 4) * tax

704.0

一見、コードを書く量が増えて大変かと思いますが、消費税が変わった場合や毎回数値を入力するミスがなくなるので 基本的にデータは変数に格納して使うようにしましょう

リスト

リストは 先ほどまでにあげた数値型や文字列型を一つにまとめるものです
下記のように都道府県名をまとめたいときや、数学で使うベクトルなども同じような仕組みのものを使っていきます

リスト構造例

上のリストを定義するには下記のようにします

pref_name = ["北海道", "青森", "岩手", "宮城", "秋田"]

リストの3番目の内容を取り出したい時は下記のようにします

pref_name[2]

‘岩手’

リストの添字は0始まりなので3番目にアクセスしたい場合、添字は2を指定することになります

制御文

for文

for文はリストの中身を一つずつ処理する文法になります
forループとか言われたりもします
以下に例を示します

list_obj = [1, 2, 3, 4, 5]

for obj in list_obj:
  print(obj * 2)

2
4
6
8
10

1回目のループでは0番目(添え字0)の要素1をobjという変数に入れて処理を進めます
for文の次の行でobj変数を2倍にしたものを表示するという命令なので
1*2の2が表示されます

2回目のループでは1番目(添え字1)の要素2がobj変数に入って処理をします
それをリストの末尾まで行ったらfor文が終了するという流れになります

ここで出てきたprint(***)は括弧の中身を表示するという関数になります
あとで、関数でも説明しますがprint()関数は便利なので覚えておきましょう!

文法は下記の形式になります

for 変数名 in リスト:
    処理1
    処理2
    ・・・

while文

while文もfor文と同じループをしますが、ループの終了条件が異なります
while文は決まった条件が満たされている間だけ ループを繰り返します
具体例として以下のようなコードになります

result = 1

while result <= 100:
  result = result * 2
  print(result)

2
4
8
16
32
64
128

上の例ではまずresult変数に1を入れてます
次のwhile文の判定ではresultが100以下の間だけ、以下のコードを実行するという意味になります

最初の実行ではresultは1なので実行します
次の行が少し難しい表現になってますが result に (result * 2)の計算結果を入れるということになります
つまり、result=1を2倍した結果を入れるので 新しいresultの結果は2になります
resultを表示して次のループを継続するかの判定になります

その結果、2、4と続いて128までループしていきます
128まで実行するとwhile文の条件100以下を満たしていないのでwhile文を抜け出すことになります

文法は以下の通りです

while 条件:
    処理1
    処理2
    ・・・

while文は条件の設定を間違うと無限ループと言ってwhile文から抜け出せないコードになってしまいますので、しっかり条件のところは確認しましょう
Colabで無限ループに入った場合、下の画像の停止ボタンを押すとプログラムが停止するので
慌てずに対処しましょう

Colabでの停止ボタン

if文

制御構文の最後はif文になります
if文は条件に合っている場合に 実行される制御文になります
具体的には下記のようなコードになります

num = 10

if num <= 20:
  print("条件合致")

条件合致

また条件に合わなかった時の処理は elif , else で実装できます

num = 10

if num < 5:
  print("numは5未満")
elif num < 10:
  print("numは10未満")
else:
  print("numは10以上")

numは10以上

elifは複数重ねて使うこともできます
elseは今まで出た条件以外という条件で使います
if文の文法は以下の通りです

if 条件:
  処理
elif 条件:
  処理
else:
  処理

関数

同じ処理を何個も使う場合や コードが長くなってしまう場合、関数という方法で
コードを別の場所で定義することができます
先ほどから使っているprint()も関数です

他にもPythonには最初から準備されている組み込み関数というものがあります
参考リンクを貼っておきますので時間がある時に眺めてみてください

例えば、数値の累乗を計算するpow関数を使ってみます

pow(10, 3)

1000

pow(10, 3)は10の3乗を計算しています
括弧の中に入れているデータを関数の引数(ひきすう)といいます
powは計算結果として1000を出力していますが、結果のことを関数の返り値(かえりち)
と言います

自分で関数を定義する場合は下記のようなコードになります

def add(num1, num2):
  return num1 + num2

sum = add(10, 2)
print(sum)

12

関数の文法は下記の通りです

def add(引数1, 引数2, ...):
  処理
  return 処理結果

引数は0個以上必要で返り値も0個以上のデータを返すことができます

モジュール/ライブラリ

Pythonは色々便利な関数などの資産が、モジュール/ライブラリといった形でまとまっています
やりたいことは モジュールを使えば大体できると思うので、まずは探してみることが大事になります (複雑になればなるほど、自分で定義するより楽で 時間も短縮できます)

例えば数値計算でよく使うnumpyというモジュールは 下記のように使います

import numpy

A = numpy.array([[1, 2, 3], [4, 2, 2], [-1, -3, 8]])

上記のコードの1行目はnumpyを使いますというimport文になります
3行目はnumpyモジュールのarrayを使うという意味になります

また、numpyと毎回打つのがめんどくさいので下記のようにasという構文であだ名をつけることができます

import numpy as np

A = np.array([[1, 2, 3], [4, 2, 2], [-1, -3, 8]])

from構文などもよく使われます
モジュールの一部だけを使いたく、コード量を少なくしたい場合に使います

例えば、numpyには整数の乱数を返すrandintという関数があります
これを使う場合、numpy.random.randint()という風に関数を呼ぶ必要があります
意味としてはnumpyの乱数モジュールの整数乱数関数になります

from文を使って下記のように省略することができます

from numpy.random import randint

print(randint(1,7))

1

from文は最初は難しいですが、よく使われているので出てきたらモジュールの一部だけ使っているのだなくらいで捉えてもらえれば大丈夫です

最後に機械学習でよく使われるモジュールについて紹介します

numpy数値計算用ライブラリ
ベクトル・行列計算でよく使われます
matplotlibデータ可視化ライブラリ
グラフを作るのに使われます
scikit-learn機械学習ライブラリ
機械学習で使われる定番のライブラリです
OpenCv画像処理ライブラリ
カメラを使うときや画像処理で使われるライブラリです
PyTorch深層学習(ディープラーニング)ライブラリ
ディープラーニングの一連の流れが実装されているライブラリ
TensorFlow深層学習(ディープラーニング)ライブラリ
PyTorchと並んで、ディープラーニングの一連の流れが実装されているライブラリ
機械学習で使われる主なライブラリ

おすすめの書籍

ここで紹介したのはPythonの機能のほんの一部ですが、マスターすれば機械学習のコードが少し理解できると思います

Pythonには、他にも便利機能だったり覚えたほうがいい機能はたくさんあります
リストのスライス、辞書型、エラー処理など 使いこなせばプログラムの幅が広がるので
ぜひ覚えてください

最後に初心者にもとっつきやすい書籍を紹介します

Pythonで動かして学ぶ!あたらしい機械学習の教科書 第3版

本書の前半はPythonの基礎・ライブラリの使い方を学習した後に 数学、機械学習へと移っていきます
丁寧にPythonの使い方も紹介されているのでおすすめです

Python ゼロからはじめるプログラミング
Python[完全]入門
スッキリわかるPython入門 スッキリわかるシリーズ

上の3つの書籍は Pythonの基礎固めにおすすめです
Pythonの概念や ここで紹介しなかったオブジェクト指向プログラムの基礎も学習できます

ABOUT ME
ラーニングマン
ラーニングマン
エンジニアサラリーマン
仕事で使いそうだから機械学習を色々勉強しましたが、あまり使わなかった中堅エンジニアです。

せっかくなので、これから機械学習・ディープラーニングを勉強しようと思っている人の助けになればと思いブログを立ち上げました。

間違いやアドバイスがあれば気軽に連絡していただけると嬉しいです。
記事URLをコピーしました