散布図
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 21/60。
10種類の観葉植物について、1日の日照時間と、それぞれの成長量を示します。線で結ぶと、もつれた状態になります。点で示すと、パターンが見えてきます。
plt.scatter(x, y)は、線を引かずに各ペアにつき1つの点を描画します。
sun = [2, 6, 3, 8, 5, 1, 7, 4, 6, 3]
growth = [4, 10, 7, 12, 6, 2, 9, 8, 7, 3]
plt.scatter(sun, growth)
plt.xlabel("Sun (hours a day)")
plt.ylabel("Growth (cm)")
plt.show()日光が多いほど、成長も増えます。散布図は、別々のサンプルについての2つの測定値がどのように関連しているかを示します。モデルが一方からもう一方を予測する前に、まずその関係を確認します。
曜日のように順序のある値にも、plt.plotを使います。
チャレンジ
中級釣り人は、釣れた順に各魚を記録しました。1行に1匹ずつ、長さ(cm)、次に重さ(g)を記録しています。最初のコードでは plt.plot でそれらをつないでいるため、線がジグザグになり、パターンが見えにくくなっています。
- 魚をそれぞれ独立した点として描画します。横軸に長さ、縦軸に重さをとります。
- 線は一切表示しません。
- タイトル、ラベル、
plt.show()はそのままにします。
別の釣行で作成した次のグラフのようになるはずです。
プログラムは何も出力しません。Coddyが出力欄でグラフの説明を表示します。
自分で試してみよう
import numpy as np
import matplotlib.pyplot as plt
# 各行は釣れた順に魚1匹を表し、長さ (cm)、重さ (g) の順に並んでいます
fish = np.array([[22, 180], [30, 390], [25, 250], [35, 620],
[28, 330], [40, 870], [19, 120], [33, 510]])
# 下のグラフを修正してください
plt.plot(fish[:, 0], fish[:, 1])
# 以下の行は変更しないでください
plt.title("Fish Catch")
plt.xlabel("Length (cm)")
plt.ylabel("Weight (g)")
plt.show()
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
データとプロットのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ