Menu
CoddyTech

密度ヒストグラム

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 7/64。

この章では、データの形について学びます。章の終わりには、ヒストグラムにベルカーブを当てはめ、ほかと異なるものを見つけられるようになります。

300個のメロンの重さを示すヒストグラム。その上に滑らかなオレンジ色のベルカーブが重なり、最も軽いメロンの下に赤い点がある

まず、修正です。カウントを使うと、500人の大人と50人のゲーマーの反応時間を比べた場合のように、人数の多いグループが少ないグループを圧倒してしまいます。

同じ反応時間を示す2つのグラフ。左はカウント:500人の大人が50人のゲーマーを大きく上回り、ゲーマーの棒はほとんど見えない。右はdensity=True:両方のグループが全体にわたって表示され、ゲーマーのほうが速く、より密集している

density=Trueは各グループをスケーリングし、棒の面積の合計が1になるようにします:

ax.hist(adults, bins=16, density=True, alpha=0.5, label="adults")
ax.hist(gamers, bins=16, density=True, alpha=0.5, label="gamers")

各高さは count / (n * bin width) なので、棒の面積はグループに占める割合を表します。これで、どのようなサイズのグループも公平に比較できます。

challenge icon

チャレンジ

簡単

都市部の病院では新生児400人を、農村部の病院では60人を計測しました。スターターコードでは、体重がcityとruralに格納されており、タイトルとラベルが設定されたグラフも用意されています。

  1. 各グループの密度ヒストグラムを、bins=10、alpha=0.5を指定し、ラベルにcityまたはruralを使って描きます。
  2. 凡例を追加し、グラフを表示します。

Coddyがグラフについて説明します。2人のトマト栽培者のデータを使ったこちらのグラフのようになるはずです。

タイトルが「Tomato Weights」の、透けて見える2つの密度ヒストグラム。農場のトマトは約90~200グラム、庭のトマトはより軽く、そのほとんどが95~145グラムで、凡例付き

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt

# 以下の行は変更しないでください
rng = np.random.default_rng(23)
city = np.round(rng.normal(3.4, 0.5, size=400), 2)
rural = np.round(rng.normal(3.2, 0.45, size=60), 2)

fig, ax = plt.subplots()
ax.set_title("Birth Weights")
ax.set_xlabel("Weight (kg)")
ax.set_ylabel("Density")

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ