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 같이 보기[ | ]
편집자 Jmnote
로그인하시면 댓글을 쓸 수 있습니다.