Pythonを用いた機械学習1日目

前回、AnacondaをインストールしPython環境を整えた。 Pythonのバージョンはx2とx3があったが、x2は2020年にサポートが終了するため、x3を選択しインストールした。ここで気をつけなければいけないのは、x2とx3で互換性がないところだ。


さて、以下に今回の学習内容をまとめていく。

1.Pythonにおける基本計算

>>> 2 + 3
5
>>> 5 -2
3
>>> 3 * 4
12
>>> 13 // 2
6
>>> 13 / 2
6.5
>>> 11 % 3
2
>>> 2 ** 3
8

・Python x3では、割り算方法が2種類ある。

「//」は商を整数「/」は浮動小数点

・「%」は割り算のあまり

・「**」は累乗

また、演算の優先順位は一般的な数学と同じ。


小数点の計算

>>> 2.5 * 1.2
3.0
>>> 2.3 * 3.4
7.819999999999999
>>> 

・小数も扱えるが、二進数で扱うため、精度には注意が必要


複素数を含む計算

>>> 1.2 + 3.4j
(1.2+3.4j)
>>> (1.2 + 3.4j) * 2
(2.4+6.8j)
>>> 1.2 + 3.4j + 2.3 + 4.5j
(3.5+7.9j)
>>> (1 + 2j) * (1 - 2j)
(5+0j)
>>> 

・複素数型が用意されており、数学では虚数を「i」で表現するが、Pythonでは「j」を用いる。


データの型を調べる「type」関数

>>> type(3)
<class 'int'>
>>> type(3.5)
<class 'float'>
>>> type(2 + 3j)
<class 'complex'>
>>> type('abc')
<class 'str'>
>>> 

・「int」整数型

・「float」浮動小数点型

・「complex」複素数型

・「str」文字列型


2.変数

計算に変数を使うことができる。変数名にはアルファベット数字アンダーバーが使える。大文字と小文字は区別される。ただし、1文字目はアルファベットかアンダーバー、2文字目は英数字かアンダーバーを使用する。

>>> x = 10  #変数「x」に10を代入
>>> print(x) #変数「x」の内容を出力する
10
>>> y = 2 * 3 + 4 * 5 #変数「y」に「2 * 3 + 4 * 5」の結果を代入する
>>> print(y) #変数「y」の内容を出力する
26
>>> x + y #変数「x」の内容と変数「y」の内容を加算する
36
>>> 

コメントアウトは「#」


3.リスト(配列)

リストの型に制約はなく、異なる型でも同じリストに格納できる。リストの添字は、他プログラム言語同様にa[0],a[1],・・・のように0(ゼロ)から始まる。

>>> a = [3, 1, 4, 2, 5] #リストを作成し、変数「a」に代入する
>>> len(a)              #変数「a」のリストの長さを取得する
5
>>> a[0]                #リストの先頭の要素を取得する
3
>>> a[3]                #リストの4番目の要素を取得する
2
>>> a[-1]               #リストの最後の要素を取得する
5
>>> b = [1, 2.0, 3 + 4j , "abc" , [-1, 1]]
>>> b
[1, 2.0, (3+4j), 'abc', [-1, 1]]
>>> 

・リストの最後の要素は引数に「-1」を指定してあげる

>>> a = [3, 1, 4, 2, 5] #リストを作成し、変数「a」に代入する
>>> a [1:3]             #2番目から3番目の要素を取得
[1, 4]
>>> a [2:]              #3番目以降の要素を取得
[4, 2, 5]
>>> a [:3]              #3番目までの要素を取得
[3, 1, 4]
>>> a [:-3]             #後ろから4番目までの要素を取得
[3, 1]
>>> 

・「:」で連続する要素をまとめて取得することもできる(「:」の後に指定した位置は含まない


4.タプル

リストは[]で囲うのに対して、タプルは()で囲う。

>>> # リスト
>>> list_data = [1, 2, 3, 4, 5]
>>> len(list_data)
5
>>>  # タプル
>>> tuple_data = (1, 2, 3, 4, 5)
>>> len(tuple_data)
5
>>> type(list_data)
<class 'list'>
>>> type(tuple_data)
<class 'tuple'>
>>> 

リストと違うのは、リストは要素を追加することができるが、タプルは一度作成すると要素を追加できないことである。削除も変更もできない。

list_data[2] = 10       #リストの場合は書き換え可能
>>> list_data
[1, 2, 10, 4, 5]
>>> tuple_data[2] = 10  #タプルの場合はエラーが発生
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'taple_data' is not defined
>>> 

・タプルを使うと処理が若干高速になる

・間違えてデータを書き換える心配がない


次回、Pythonを用いた機械学習2日目はこちらからどうぞ。



よろしければサポートお願いします。いただいたサポートを皆さんに還元していきたいと思っております。