ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 날코딩: 최소제곱법(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}')

     

    반응형
Designed by Tistory.