忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【DS検定対策】確率の基本!トランプから「特定のカード」を引く計算

確率の計算は「起こりうるすべてのパターンの数」を分母に、「特定の条件を満たす数」を分子に置くのが基本です。トランプを例に、数え上げのコツを掴みましょう。

1. 【 問題 】

ジョーカーを除いた52枚のトランプ1セットから、カードを1枚引くとき、それが「黒の絵札」である確率はいくらでしょうか?

① 3/52
② 6/52
③ 12/52
④ 26/52


2. 【 解答 】

正解: ② 6/52

3. 整理:カードの内訳を分解する

確率を求めるためには、まず「対象となるカードが何枚あるか」を正確に数え上げる必要があります。

【 「黒の絵札」の数え方 】

[ 1. 黒のマーク ]
・スペード(♠️)
・クラブ(♣️)

[ 2. 絵札の種類 ]
・ジャック(J)
・クイーン(Q)
・キング(K)

[ 3. 合計枚数の計算 ]
★ 2マーク × 3種類 = 6枚
(♠️J, ♠️Q, ♠️K, ♣️J, ♣️Q, ♣️K)

--------------------------

確率の式: 対象の数(6) ÷ 全体の数(52) = 6/52
(約分すると 3/26 ですが、試験では選択肢に合わせて判断します)

4. 確率の基本公式

1. 全事象の把握: 常に「全部で何通りあるか」を分母に置きます。トランプなら通常は52(ジョーカー込みなら53や54)です。
2. 排反事象: 「黒の絵札」かつ「赤の絵札」のようなカードは存在しません。このような関係を「互いに排反である」と言います。
3. 条件の積: 「黒である確率(26/52)」×「絵札である確率(12/52)」として計算しても、同じ結果が得られます。


5. DS検定形式:実戦4択クイズ

問:トランプ52枚から1枚引くとき、それが「ハート」または「エース(A)」である確率はいくらになるか。

① 16/52   ② 17/52   ③ 13/52   ④ 4/52

【 正解: ① 】

解説: ハートは13枚、エースは4枚あります。ただし、「ハートのエース」が両方に数えられているため、13 + 4 - 1 = 16枚となります。この「重なりを引く」考え方は、集合の和集合の計算と同じです。


6. まとめ

DS検定では、こうした単純な数え上げから、条件が複雑になった「条件付き確率」まで幅広く出題されます。まずはトランプやサイコロを題材に、分母と分子を正確に見極める癖をつけておきましょう!

PR

【DS検定対策】「それ以外」を全部集める!補集合のマスター術

集合全体の中で、ある条件に「当てはまらないもの」を抽出したい。そんなときに使うのが「補集合」という考え方です。

1. 【 問題 】

全体集合を U = { 1, 2, 3, 4, 5 } とします。その部分集合を A = { 1, 2, 3 } とするとき、A の補集合として正しいものはどれでしょうか?

① { 1, 2, 3 }
② { 4, 5 }
③ { 1, 2, 3, 4, 5 }
④ { 0 }


2. 【 解答 】

正解: ② { 4, 5 }

3. 整理:全体から「A」を取り除く

補集合とは、全体集合 U の要素の中で「A には含まれていない要素」をすべて集めた集合のことです。

【 補集合の計算ステップ 】

[ 1. 全体(U)を把握する ]
U = { 1, 2, 3, 4, 5 }

[ 2. A にあるものをチェック ]
A = { 1, 2, 3 }

[ 3. 全体から A を引く(除外する) ]
★ これが補集合!
{ 1, 2, 3, 4, 5 } - { 1, 2, 3 } = { 4, 5 }

--------------------------

ポイント: 補集合は記号で $\bar{A}$(Aバー)や $A^c$ と表記されます。

4. なぜデータ分析で大切なのか?

1. 余事象の確率: 「少なくとも1回は当たる確率」を求める際、「1回も当たらない確率(補集合)」を計算して全体から引くほうが圧倒的に早い場合があります。
2. 否定条件の抽出: SQLなどで「〜ではないデータ」を抽出する際(NOT条件)、補集合の考え方を用います。
3. 除外リストの作成: 全顧客リストから「優待済み顧客」の補集合を求めることで、「未アプローチの顧客」を特定できます。


5. DS検定形式:実戦4択クイズ

問:ある事象 A が起こる確率を P(A) とするとき、その補集合(余事象)である「A が起こらない確率」を表す式として正しいものはどれか。

① P(A)   ② 1 / P(A)   ③ 1 - P(A)   ④ 0

【 正解: ③ 】

解説: 全体の確率は 1 です。そこから事象 A が起こる確率を引けば、その裏側である「起こらない確率」が求められます。これは確率統計の基礎中の基礎です。


6. まとめ

DS検定において「Aではないもの」「全体からAを除いたもの」というキーワードが出たら「補集合」を指します。ベン図を描いたときに、Aの円の外側を塗りつぶすイメージを持って得点に繋げましょう!

【DS検定対策】ベン図で攻略!集合の「和集合」と「積集合」の求め方

データ抽出の基本は集合の操作です。2つのデータ群があったとき、その「どちらかにあるもの」と「両方にあるもの」を正しく区別しましょう。

1. 【 問題 】

以下の2つの集合 A と B があるとき、その「和集合」と「積集合」の組み合わせとして正しいものはどれでしょうか?

集合 A = { 3, 4, 6, 8, 10 }
集合 B = { 3, 6, 9 }

① 和集合:{ 3, 6 } / 積集合:{ 3, 4, 6, 8, 9, 10 }
② 和集合:{ 3, 4, 6, 8, 9, 10 } / 積集合:{ 3, 6 }
③ 和集合:{ 3, 6, 9 } / 積集合:{ 3, 4, 6, 8, 10 }
④ 和集合:{ 4, 8, 9, 10 } / 積集合:{ 3, 6 }


2. 【 解答 】

正解: ② 和集合:{ 3, 4, 6, 8, 9, 10 } / 積集合:{ 3, 6 }

3. 整理:和集合と積集合の違い

【 和集合(A ∪ B):「どちらかにあればOK」 】

AにあるものとBにあるものをすべて合わせます。ただし、重複している数字は1回だけ書きます。
・A = { 3, 4, 6, 8, 10 }
・B = { 3, 6, 9 }

{ 3, 4, 6, 8, 9, 10 }

【 積集合(A ∩ B):「両方に共通するもの」 】

AとBの両方に含まれている数字だけを抜き出します。
・A = { 3, 4, 6, 8, 10 }
・B = { 3, 6, 9 }

{ 3, 6 }

4. データ分析(SQL)との関係

1. 積集合(INTERSECT / AND): 「30代以上」かつ「愛知県在住」など、厳しい条件で絞り込むときに使います。
2. 和集合(UNION / OR): 「学生」または「20歳未満」など、対象を広げるときに使います。
3. 差集合(EXCEPT): AからBに含まれるものを除外する操作です(例:A - B = { 4, 8, 10 })。


5. DS検定形式:実戦4択クイズ

問:2つの条件 P と Q があるとき、「P かつ Q」ではない部分(PとQの共通部分以外すべて)を表すベン図の領域を考える際に利用される、集合論の有名な法則を何と呼ぶか。

① ド・モルガンの法則   ② 大数の法則   ③ ベイズの法則   ④ 推移律

【 正解: ① 】

解説: 集合の否定(〜ではない)に関わる重要なルールが「ド・モルガンの法則」です。データ抽出の複雑な条件式を整理する際に非常に役立ちます。


6. まとめ

DS検定では、ベン図を見て直感的に集合の範囲を答えさせる問題がよく出ます。「積集合=重なり部分(AND)」「和集合=全部(OR)」というイメージを定着させておきましょう!

【Python】SymPyで対数(log)を解く!数学的な厳密計算

Pythonで数学の計算をする際、通常の math.log では小数(浮動小数点数)として結果が返ってくるため、わずかな誤差が生じることがあります。今回は、代数計算ライブラリ「SymPy」を使い、数学的に美しく、正確な答えを導き出す方法を紹介します。

1. 考え方:SymPy(シムパイ)による厳密解

SymPyは「記号計算」を行うためのライブラリです。例えば「log(8, 2)」を計算する場合、単なる数値計算ではなく「2を何乗したら8になるか」という数学的な構造として処理し、正確な「3」という整数を導き出します。

[ 準備 ]
外部ライブラリのため、インストールが必要です。
pip install sympy

[ 計算ルール ]
log(真数, 底) の順で指定します。
・底を省略すると自然対数(底がe)になります。

2. Pythonサンプルプログラム

SymPyの log 関数を使用して、「底を2とする8の対数」を求めます。計算結果が数値ではなくSymPyのオブジェクトとして扱われるのがポイントです。

# -*- coding: utf-8 -*-
from sympy import log

def main():
    # log(真数, 底)
    # 8 = 2^3 なので、結果は 3 になるはずです
    ans = log(8, 2)

    print("SymPyによる対数計算を開始します。")
    print(f"log(8, 2) の結果: {ans}")

if __name__ == "__main__":
    main()

3. 実行結果

SymPyによる対数計算を開始します。
log(8, 2) の結果: 3

4. ステップアップ:文字式のまま計算する

SymPyの真骨頂は、具体的な数字だけでなく「文字」を使って計算できる点にあります。

  • 記号の定義symbols('x') を使うと、xを未知数としたまま計算が可能です。
  • 式の整理simplify() を使えば、複雑な対数式を自動で簡略化してくれます。

5. mathモジュールとの決定的な違い

Python標準の mathSymPy、どちらを使うべきか比較表で確認しましょう。

比較項目math.log (標準)sympy.log (今回)
出力形式 float(小数) Integer / Symbol(整数や記号)
精度 近似値(誤差あり) 完全な精度(誤差なし)
主な用途 高速な数値計算、統計処理 数式の証明、因数分解、方程式を解く

6. まとめ

対数計算において、答えが綺麗に整数になる場合や、文字式として扱いたい場合は SymPy が最適です。標準の math では 2.9999999999999996 のように表示されてしまうケースでも、SymPyならスッキリと 3 と答えてくれます。数学的な美しさを保ちたいプログラムにぜひ取り入れてみてください!

【Python】クラスの基本!設計図と実体(インスタンス)を理解する

Pythonを学んでいると必ず出会うのが「クラス(Class)」です。一見難しそうですが、仕組みを理解するとプログラムの整理整頓が劇的に楽になります。今回は、最もシンプルなクラスを作成しながら、その基本構造を解説します。

1. 考え方:設計図(クラス)と実体(インスタンス)

プログラミングにおけるクラスは、よく「たい焼きの型(設計図)」に例えられます。型があるだけでは食べられませんが、その型から作られた「たい焼き(実体)」は食べることができます。

・クラス (Class):データの「設計図」です。
・インスタンス (Instance):設計図から生成された「実体」です。
・メソッド:クラスの中で定義された「関数(ふるまい)」のことです。

2. Pythonサンプルプログラム

挨拶を表示するだけのシンプルなクラスを作成します。クラスを使うには、まず「実体化(インスタンス化)」を行う必要があります。

# -*- coding: utf-8 -*-

class Test:
    # メソッドの定義。第一引数には必ず「self」を書く決まりです。
    def printTest(self):
        print("Hello")

def main():
    # 1. インスタンス化(設計図から実体を作る)
    test = Test()

    # 2. メソッドを呼び出す
    test.printTest()

if __name__ == "__main__":
    main()

3. 実行結果

Hello

4. ステップアップ:謎の引数「self」の正体

クラス内のメソッドを定義する際、必ず最初に self という引数を書きます。これは一体何でしょうか?

  • 自分自身を指すself は「そのメソッドを呼び出しているインスタンス(自分自身)」を指します。
  • 個別のデータを保持する:同じクラスから複数のインスタンスを作った際、それぞれのインスタンスが持つデータを区別するために self が使われます。

※呼び出すときは test.printTest() のように書き、self に値を渡す必要はありません。Pythonが自動的にインスタンス自身を self に放り込んでくれます。

5. クラスと関数の使い分け

単なる処理のまとまりなら「関数」で十分ですが、クラスを使うと以下のメリットがあります。

機能メリット主な用途
関数 シンプルで軽量 入力に対して出力を返すだけの計算など。
クラス 「状態」を保持できる RPGのキャラ(HPや攻撃力を持つ)のように、データと処理をセットにしたい時。

6. まとめ

クラスは「複雑なものを整理するための箱」です。最初は self の記述に違和感があるかもしれませんが、「クラスからインスタンスを作って、メソッドを呼ぶ」という一連の流れに慣れていくことで、大規模な開発もスムーズに行えるようになります!