見出し画像

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

前回から複数回に分けて、機械学習に必要な統計の基礎知識を学んでいくための、前提知識として数列や集合などについて学んでいる。今回は、集合と内包表記についてまとめていく。

前回の記事はこちら。数列やシグマに関することをまとめている。noteに数列が貼れないので割愛。



1.集合と内包表記

数列では順番が大事だが、順番が必要でない場合(単純にグループに分けたい場合)は、「集合」を使う。1〜7までの整数を1, 3, 5, 7とその他に分けたい場合、A = {1, 3, 5, 7}とB = {2, 4, 6}と表すことができる。

・要素:集合に含まれる一つ一つ

・有限集合:要素が{1, 3, 5, 7}のように有限個の集合

・無限集合:「偶数」や「整数」というような無限個の要素がある集合

・内包表記:{n|nは奇数}や{x|xは実数、0≦x≦1}というように無限集合を表す


2.実際のPythonコード

他言語と同じようにPythonでもリストやタプルを使って表現する

・リストをつくるコード

>>> a = [1, 3, 5, 7]
>>> b = [2, 4, 6]


例1) 次の集合をPythonで書いてみよう。 

{x|xは10未満の自然数}

・リスト内包表記を使ったコード

>>> a = [x for x in range(1, 10)]
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

要素の個数が多い場合はrange関数を用いると効率よくリスト生成ができる

・リスト内包表記を使って多重リストの生成

>>> b = [[i + j for i in range(3)] for j in range(4)]
>>> print(b)
[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> 

これは、多重リストを初期化するときにも使える


注意1)多重リストを初期化するときにリスト内包表記を使わない場合、思った結果が出ない場合もある

・多重リストを初期化

>>> b = [[0] * 3] *4
>>> print(b)
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> 


・代入すると、想定と異なる結果

>>> b = [[0] * 3] *4
>>> b[1][2] = 5
>>> print(b)
[[0, 0, 5], [0, 0, 5], [0, 0, 5], [0, 0, 5]]
>>> 


・リスト内包表記を使った正しい結果

>>> c = [[0 for i in range(3)] for j in range(4)]
>>> c[1][2] =5
>>> print(c)
[[0, 0, 0], [0, 0, 5], [0, 0, 0], [0, 0, 0]]
>>> 


3.集合を扱うときに便利なset型

・set型:集合を扱う際に便利な型。要素の重複や順番を意識しなくて良い。集合に対する演算が用意されている。

・集合を操作するコード

>>> a = set([2, 4, 5])
>>> b = set([3, 4, 6])
>>> print(a)
{2, 4, 5}
>>> print(a & b)
{4}
>>> print(a - b)
{2, 5}
>>> print(a | b)
{2, 3, 4, 5, 6}
>>> 

1、2行目:集合A、集合Bをそれぞれ作成

5行目:集合Aと集合Bの積集合を表示

7行目:集合Aと集合Bの差集合を表示

9行目:集合Aと集合Bの和集合を表示


次回は、平均・分散・標準偏差といった統計の基礎的な手法について学んでいく。




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