컴퓨터 비전 두 번째 과제
8개의 점들 중에 6개의 점을 랜덤으로 선택해서 최소제곱선? 그리기
import numpy as np
import pandas as pd
import random
import matplotlib.pyplot as plt
랜덤으로 점을 선택하기 위한 랜덤 import
list = [[-2.9,35.4], [-2.1,19.7],[-0.9,5.7],[0.1,1.2],[1.1,2.1],
[1.9,8.7],[3.1,25.7],[4.0,41.5]]
점들의 리스트 생성
#random.randint(0,7)
number = []
a=random.randint(0,7)
for i in range(6):
while a in number:
a=random.randint(0,7)
number.append(a)
number.sort()
print(number)
number2 = []
b=random.randint(0,7)
for i in range(6):
while b in number2:
b=random.randint(0,7)
number2.append(b)
number2.sort()
print(number2)
number리스트를 통해 점(list) 리스트의 인덱스로 점들에 접근 할 것!
한 리스트에서 같은 점이 반복되지 않도록 리스트 작성
number 리스트는 나중에 그릴 그래프를 위해 순서대로 정렬
a = np.array([list[number[0]],list[number[1]],list[number[2]]
,list[number[3]],list[number[4]],list[number[5]]])
b = np.array([list[number2[0]],list[number2[1]],list[number2[2]]
,list[number2[3]],list[number2[4]],list[number2[5]]])
각각의 점들 저장
x = a[:,0]
y = a[:,1]
plt.scatter(x,y, c = 'black', s= 100)
plt.show()
x2 = b[:,0]
y2 = b[:,1]
plt.scatter(x2,y2, c = 'red', s= 100)
plt.show()
scatter로 점 찍기
a, b, c = np.polyfit(x, y, 2)
print(a, b, c)
a2, b2, c2 = np.polyfit(x2, y2, 2)
print(a2, b2, c2)
점들로 가장 유사한 2차함수의 계수들 구하기
for i in range(6):
fit_y = a*x**2 + b*x + c
plt.scatter(x,y)
plt.plot(x, fit_y)
plt.show()
for i in range(6):
fit_y2 = a2*x2**2 + b2*x2 + c2
plt.scatter(x2,y2)
plt.plot(x2, fit_y2)
plt.show()
점들을 직선으로 잇기
X = np.arange(-4,5,0.1)
Y = [a*val**2+b*val+c for val in X]
plt.scatter(x,y)
plt.plot(X,Y)
plt.show()
Y2 = [a2*val**2+b2*val+c2 for val in X]
plt.scatter(x2,y2)
plt.plot(X,Y2)
plt.show()
최소제곱 곡선과 점들을 찍어서 확인하기
plt.plot(X, Y, X, Y2, 'r--')
plt.show()
최소제곱곡선 두 개를 동시에 나타내기
'데이터 청년 캠퍼스(경남대학교) > 스터디' 카테고리의 다른 글
2021-07-12 (0) | 2021.07.12 |
---|---|
2021 - 07 - 07 (0) | 2021.07.07 |
2021-07-05 (0) | 2021.07.05 |
2021-07-01 (0) | 2021.07.02 |
2021 - 06 - 30 (0) | 2021.07.01 |