変数の役割をAIの文脈で振り返る
ここからしばらく、Pythonの基礎を確認していきます。プログラミングの経験がある方には既に馴染みのある内容も多いと思いますが、この後NumPyやscikit-learnを使う際に土台となる部分なので、一度整理しておきましょう。
変数は、値に名前を付けて保存しておく仕組みでした。
age = 20
name = "太郎"
これだけ見ると当たり前のようですが、機械学習の文脈で考えると、変数は次のようなものを保存するために使われます。
- 入力データ(
x)や、それに対する予測結果(y)
- モデルが学習の途中で持っている数値(パラメータ と呼びます。例えば、第4章で学ぶ直線の傾きや切片です)
- データセット全体(後の単元でNumPyの配列やpandasの表として扱います)
つまり、これから学ぶ内容のほとんどは「何らかの値を変数に入れて、それを処理していく」ことの積み重ねです。今のうちに変数の扱いに慣れておくことが、後の単元をスムーズにします。
データ型を意識する理由
Pythonの代表的なデータ型には、次のようなものがあります。
age = 20 # int (整数)
height = 168.5 # float (小数)
name = "太郎" # str (文字列)
is_student = True # bool (真偽値、TrueかFalseのどちらか)
type()を使うと、変数の型を確認できます。
type(age) # <class 'int'>
「型なんて気にしなくても動くのでは?」と思うかもしれません。実際、簡単な計算では問題になりにくいのですが、機械学習ではデータ型を強く意識する必要があります。理由は主に2つです。
- 数値計算をするには、データが数値型(int/float)である必要がある。 例えば「はい/いいえ」という文字列のままでは計算できないため、
1と0のような数値に変換してから扱います。
- 型を間違えると、意味の分からないエラーや、気づきにくい誤動作の原因になる。 例えば
"3" + "4"は文字列の結合になり"34"になりますが、3 + 4は7になります。見た目は似ていても結果は全く違います。
このズレは、後のNumPy・pandasの単元で「データ型の変換」として繰り返し登場するので、ここで一度体感しておきましょう。