Python 을 이용한 최소 자승법 (Ordinary Least Squares)

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 Python 에서 Ordinary Least Squares (OLS) 방법을 구현하는 방법을 배우게 됩니다. OLS 는 머신 러닝, 특히 선형 회귀 문제에서 사용되는 기본적인 수학적 최적화 기법입니다.

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 샘플 데이터를 기반으로 선형 방정식의 기울기 (w1) 와 절편 (w0) 을 계산하기 위해 OLS 함수를 구현하는 방법.
  • 샘플 데이터로 OLS 함수를 테스트하고 결과의 정확성을 확인하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 선형 방정식의 기울기와 절편을 계산하기 위한 OLS 공식을 유도할 수 있습니다.
  • 외부 라이브러리를 사용하지 않고 Python 에서 OLS 함수를 구현할 수 있습니다.
  • 샘플 데이터로 OLS 함수를 테스트하고 검증할 수 있습니다.
  • 머신 러닝 및 선형 회귀 문제에서 OLS 방법의 중요성을 이해할 수 있습니다.

최소 자승 함수 구현

이 단계에서는 Python 에서 Ordinary Least Squares (OLS) 함수를 구현합니다. 이 단계를 완료하려면 아래 단계를 따르세요:

  1. 텍스트 편집기에서 least_squares.py 파일을 엽니다.

  2. 제공된 사양에 따라 least_squares_function 함수를 구현합니다:

    • 이 함수는 두 개의 입력 매개변수 x (샘플 x 값의 목록) 와 y (샘플 y 값의 목록) 를 받아야 합니다.
    • 이 함수는 챌린지 설명에 제공된 OLS 공식을 사용하여 선형 방정식의 기울기 (w1) 와 절편 (w0) 을 계산해야 합니다.
    • 이 함수는 계산된 w0w1 값을 반올림하여 소수점 두 자리까지 표시한 후 반환해야 합니다.
    • 이 함수는 w0w1 값을 해당 순서대로 반환해야 합니다.

다음은 완성된 least_squares_function 구현입니다:

def least_squares_function(x, y):
    """
    Parameters:
    x -- list of values of sample x
    y -- list of values of sample y

    Returns:
    w0 -- linear equation parameter, rounded to two decimal places
    w1 -- linear equation parameter, rounded to two decimal places
    """

    n = len(x)

    ## Calculate the sums needed for the slope (w1) and intercept (w0)
    sum_x = sum(x)
    sum_y = sum(y)
    sum_xy = sum(x_i * y_i for x_i, y_i in zip(x, y))
    sum_x_squared = sum(x_i**2 for x_i in x)

    ## Calculate the slope (w1) and intercept (w0) using the OLS formulas
    w1 = (n * sum_xy - sum_x * sum_y) / (n * sum_x_squared - sum_x**2)
    w0 = (sum_y - w1 * sum_x) / n

    ## Round to two decimal places
    w0 = round(w0, 2)
    w1 = round(w1, 2)

    return w0, w1
  1. least_squares.py 파일을 저장합니다.
✨ 솔루션 확인 및 연습

최소 자승 함수 테스트

이 단계에서는 이전 단계에서 구현한 least_squares_function을 테스트합니다.

  1. least_squares_function을 테스트하기 위해 파일 끝에 다음 코드가 있습니다:
## Example usage
if __name__ == "__main__":
    x_example = [1, 2, 3, 4]
    y_example = [4, 5, 6, 7]

    result = least_squares_function(x_example, y_example)
    print("w0:", result[0])
    print("w1:", result[1])
  1. 터미널에서 least_squares.py 스크립트를 실행합니다:
python3 least_squares.py

다음과 같은 출력을 볼 수 있습니다:

w0: 3.0
w1: 1.0

이 출력은 least_squares_function이 예상대로 작동하고 있음을 확인합니다.

축하합니다! Python 에서 Ordinary Least Squares 함수를 성공적으로 구현했습니다. 다음 단계에서는 이 함수를 실제 머신 러닝 문제에서 사용하는 방법을 살펴볼 수 있습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.