NumPy 과제

1 개요[ | ]

NumPy 과제
  • 2차원 평면 가정
  • 점 10개 생성 - A 집단
  • 점 10개 생성 - B 집단
  • 새로운 점 하나 생성
  • 20개의 점과 모든 거리를 구하여 가장 가까운 점 K개(홀수) 선택
  • 선택된 점들이 어느 집단에 해당되는 점이 많은가?

2 예시[ | ]

Python
Copy
import random
import numpy as np
import operator

# functions
def get_random_point(r1, r2):
    return np.array([random.randint(r1, r2), random.randint(r1, r2)])

# settings
K = 7;

# main program
instances = []

for i in range(10):
    instances.append({
        'group': 'A',
        'point': get_random_point(0, 70) })

for i in range(10):
    instances.append({
        'group': 'B',
        'point': get_random_point(30, 100) })

my_point = get_random_point(0, 100)

for instance in instances:
    instance['distance'] = np.linalg.norm(my_point - instance['point'])

instances.sort(key=operator.itemgetter('distance'))

print( 'My Point:')
print( my_point )

print( 'Nearest %d Points:' % K )
group_counts = {'A':0, 'B':0}
for instance in instances[:K]:
    print(instance)
    group_counts[instance['group']] = group_counts[instance['group']] + 1

print( 'Major group:')
print( sorted(group_counts, key=group_counts.get)[1] )

# My Point:
# [ 4 37]
# Nearest 7 Points:
# {'group': 'A', 'point': array([ 1, 36]), 'distance': 3.1622776601683795}
# {'group': 'A', 'point': array([15, 46]), 'distance': 14.212670403551895}
# {'group': 'A', 'point': array([ 6, 16]), 'distance': 21.095023109728988}
# {'group': 'A', 'point': array([25, 48]), 'distance': 23.706539182259394}
# {'group': 'A', 'point': array([13, 59]), 'distance': 23.769728648009426}
# {'group': 'A', 'point': array([11,  7]), 'distance': 30.805843601498726}
# {'group': 'B', 'point': array([41, 38]), 'distance': 37.013511046643494}
# Major group:
# A

3 같이 보기[ | ]