ロジカ式ロゴ

Python
データ分析

ページ一覧に戻る
Lesson 18 二点間の距離
渡辺先生

座標上のデータ同士の近さを数値で表します。

まず自分で予想してから、コードを動かしてみよう!

そうた

結果だけでなく、そう考えた理由も説明してみます。

ひな

QUESTION まず考えよう

3つの点A、B、Cでは、どの2点が最も近いでしょう?

座標上の3点について横と縦の差から点間距離を比べる図

この図で分かること・考え方

  1. 2点間の距離は、x座標の差とy座標の差から求めます。
  2. 座標の差を直角三角形の辺と見ると、距離の公式につながります。
  3. 複数の組を同じ方法で計算し、最も小さい距離を選びます。

PREDICT 実行前の予想

グラフを見ずに座標の差から予想してください。

TRY 実行して確かめよう

TRY
import math import matplotlib.pyplot as plt points = {'A': (1, 2), 'B': (3, 3), 'C': (7, 8)} def distance(p, q): return math.sqrt((p[0]-q[0])**2 + (p[1]-q[1])**2) print('A-B:', distance(points['A'], points['B'])) print('A-C:', distance(points['A'], points['C'])) print('B-C:', distance(points['B'], points['C'])) for name, (x, y) in points.items(): plt.scatter(x, y) plt.text(x, y, name) plt.axis('equal') plt.grid(True) plt.show()
渡辺先生

グラフや数値のどこが予想と同じで、どこが違ったかを見つけましょう。

CHECK 結果を読み取ろう

最も近い組と、その根拠となる距離を答えてください。

📖 考え方を確認する

AとBが最も近く、距離は√5、約2.24です。

CHALLENGE 自分で直してみよう

点D(2, 7)を追加し、Dに最も近い点を調べてください。

CHALLENGE
import math points = {'A': (1, 2), 'B': (3, 3), 'C': (7, 8)} d = (2, 7) def distance(p, q): return math.sqrt((p[0]-q[0])**2 + (p[1]-q[1])**2) # DからA、B、Cまでの距離を表示しよう

📖 解答例と解説

import math

points = {'A': (1, 2), 'B': (3, 3), 'C': (7, 8)}
d = (2, 7)

def distance(p, q):
    return math.sqrt((p[0]-q[0])**2 + (p[1]-q[1])**2)

for name, point in points.items():
    print(f'D-{name}: {distance(d, point):.2f}')

DからBまでが約4.12で最も近いです。上級編では、この近さを分類などに利用します。

POINT
  •  2点の座標差から距離を求める
  •  距離が小さいほど近い
  •  単位や尺度が違うデータでは注意が必要

NEXT 次の学びへ

渡辺先生

次は点の集まり全体を1本の回帰直線で表します。

振り返り:今回使った命令、結果から分かったこと、この方法を使える場面を、それぞれ1文で書きましょう。