-
파이썬 날코딩: 최소제곱법(method of least squares)ML 2023. 1. 21. 20:38반응형
모두의 딥러닝을 읽고 있습니다.
책의 내용을 numpy를 쓰지 않고 코딩해 보았습니다.# 최소제곱법 x = [2, 4, 6, 8] y = [81, 93, 91, 97] mean_x = sum(x) / len(x) mean_y = sum(y) / len(y) print(f'x의 평균: {mean_x}') print(f'y의 평균: {mean_y}') dividend = sum((each_x - mean_x) * (each_y - mean_y) for each_x, each_y in zip(x, y)) divisor = sum((each_x - mean_x) ** 2 for each_x in x) print(f'분자: {dividend}') print(f'분모: {divisor}') a = dividend / divisor b = mean_y - a * mean_x print(f'기울기: {a}') print(f'절편: {b}')
numpy란?
다차원 배열의 연산을 편하고 빠르게 처리할 수 있는 라이브러리.
배열과 배열간 연산은 각각의 원소끼리 연산하고
배열과 상수의 연산은 배열 각각의 원소에 상수를 연산한다.import numpy as np x = np.array([2, 4, 6, 8]) y = np.array([1, 2, 3, 4]) print(x + y) # [ 3 6 9 12] print(x * y) # [ 2 8 18 32] print(y ** 2) # [ 1 4 9 16] print(y + 3) # [4 5 6 7] print(y / 3) # [0.33333333 0.66666667 1. 1.33333333]
numpy를 쓰면..
# 최소제곱법 import numpy as np x = np.array([2, 4, 6, 8]) y = np.array([81, 93, 91, 97]) mean_x = np.mean(x) mean_y = np.mean(y) print(f'x의 평균: {mean_x}') print(f'y의 평균: {mean_y}') dividend = np.sum((x - mean_x) * (y - mean_y)) divisor = np.sum((x - mean_x) ** 2) # np.power(x - mean_x, 2) print(f'분자: {dividend}') print(f'분모: {divisor}') a = dividend / divisor b = mean_y - a * mean_x print(f'기울기: {a}') print(f'절편: {b}')
반응형