Pythonで確率の計算。for文で集合の中の要素を抽出

データ分析
Sponsored Link

確率という言葉は「降水確率」みたいな形で見たことはあるけど、なんとなく感覚的にわかっているだけで、実際に何かというと何かよくわからないですよね。

自分も統計の本を買ってみましたが、確率の項で こんなのが出てくるだけで拒否反応が出てしまいます。

しかし、データ分析をするのに理解する必要があるので、頑張って読んでみました。

やり方としては、この演習で身につける統計学入門の演習をpythonを使って回答するという方法です。

一応確率は中学校で習っているのですが、基本的な復習としてまず集合と要素について、簡単に説明します。

プログラミングを勉強したい!! プログラミングに興味がある!!
そんなあなたへのおすすめ記事
無料体験あり、キャッシュバック有りプログラミングスクールおすすめはこちら

 

集合と要素とは

集合と要素。習った記憶さえもないんですが、教えてもらえますか?

中学校で習ったはずなんですけど、覚えている人多くないとおもいますね。

集合(set) とはある条件を満たす集団を指し、その集合を構成しているものを要素(element) といいます。

例えば、サイコロの目の偶数の目の要素は {2, 4, 6} になります。

なので偶数の目をAとすると、

A = {2, 4, 6}

サイコロの目は要素の数がいくつなのか推測でき、しかも有限なので有限集合といいます。

しかし、要素の数がいくつかわからない集合もありますので、それらを無限集合といいます。

以下のような集合ですね。

B = {2, 4, 6, 8, 10 …..}

ちなみにPyhtonでもset型を使いますが、使用するのは中括弧 {} ですので覚えておくと役に立ちます。

部分集合と真部分集合

Pythonでもかけるんですか?

はい書けますよ。まずは書いてみましょう。

ではこれをpythonで書いてみましょう。

A = [2,4,6,]
B = [2,4,6,8,10]

B は無限集合なのですがどう書くかわからなかったので、とりあえず10までにしました(書き方知ってたら教えてください)。

ここで知っておくことは、部分集合と真部分集合ですね。

Aの要素はすべてBに属するのでAはBの部分集合といい、数学的には以下のように書きます。

そして、AとBは等しくないので、AはBの真部分集合になり、以下のように書きます。

この変な記号がわけわからないんですよね。

共通部分

次に共通部分について考えてみます。

集合を視覚的に理解するための図(ベン図)で考えてみましょう。

まず下記のように、二つの集合 C と D のどちらにも属する要素がある場合、その要素が作る集合を部分共通といいベン図では以下のようになります。

また、数学的には以下のように書き、CかつDと読みます。

そしてPythonで書くと以下のようになります。

C = [1,2,3,4,5]
D = [4,5,6,7,9] 
C_D_and = set(C) & set(D) # C かつ D 
print(C_D_and) {4, 5}

この場合、変数C と 変数D にはリストで要素を代入していますが、出力は中括弧でみられるように、set型になっています。

次に、両方のいずれにも共通部分がなく、さらに C と D の いずれかに属する要素の集合を表す以下のような場合。

数学的に書くと、以下のようになり、CまたはDと読みます。

Pythonで書いてみると以下のようになります。

C = [1,2,3,4,5] 
D = [4,5,6,7,9] 
C_D_or = set(C + D) # a または b 
print(C_D_or)
{1, 2, 3, 4, 5, 6, 7, 9}

ではベン図Cのように、ある集合U全体を全体集合といい、その中に部分集合Aがある場合Aに属さない要素が作る集合を補集合と呼びAcと書きます。

Pythonで書いてみます。

A = [1,2,3,4,5]
U = [1,2,3,4,5,6,7,8,9,10,11]
Ac = set(U) ^ set(A) # 全体集合 U から A の要素を抜き出す。
print(Ac)
{6, 7, 8, 9, 10, 11} # 補集合 Ac

補集合Acを作成できました。

集合の練習問題を解いてみる

ではさらに演習で身につける統計学入門の練習問題をPython を使って解いてみましょう。

まずはこれ。

つまり、「xがNの要素であるとき、2超10未満の要素」を挙げるという問題ですね。

一気に難易度が上がりましたね。文がなければ何言っているか全くわからないです。

そうですよね。でも一度法則がわかると、それほど難しくはないですよ。

これもPythonで書いてみますね。

N = [1,2,3,4,5,6,7,8,9,10] # 変数Nに1から10までの整数を代入
A = N[2:9] # 2超10未満の要素を抽出
print(A)
[3, 4, 5, 6, 7, 8, 9]

次の問題はこれ。

つまり「xがNの要素で偶数であるときの12未満の数」という意味です。

難易度が上がってますね。

そうですね。でもfor文とif文を使えば意外と簡単にPythonで書けます。

では基本的なfor文とif文を使って、1から12までの集合 i を定義し、そこから偶数のみを抽出してみましょう。

for i in range (1, 12): # 1 以上 12未満の要素を定義。
    if i % 2 == 0: # 定義した数のうち、もし2で割り切れれば出力。
        print(i)
2
4
6
8
10

偶数の抽出はできましたが、使い勝手がいいようにこれらの要素をリスト化してみようと思います。

B = [] # 集合の要素が入る箱を作る。
for i in range(2,12,2):# 2から始まり12未満まで2づつ増加させる。
    b.append(i) # 生成された数をひとつづつBに格納。
print(B)
[2, 4, 6, 8, 10]

for 文を使ってリストBを作ることができました。

プログラミングを勉強したい!! プログラミングに興味がある!!
そんなあなたへのおすすめ記事
無料体験あり、キャッシュバック有りプログラミングスクールおすすめはこちら

 

関連記事

Pythonのif文で複数条件を書いてみる。
if文は、pythonでプログラムを書くときに使いこなせると便利ですよね。 このif文、構造自体はそれほど難しくないのですが、作るときの論理を理解するのが意外と難しいのです。 そこで、実際にif文を書いてみてた結果とを書いてみま...
Pythonでwhile文を使った繰り返し処理をやってみた。
while文は、同じプログラムを何度も繰り返す必要があるループ処理に使われます。 しかしwhile文も、if分などと並んでなんとなく感覚でつかみにくい構文なので、なんとなく感覚がつかめないんですよね。 そこで自分が実際にコードを...
Sponsored Link

コメント

タイトルとURLをコピーしました