Наименьшие квадраты в Python

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь реализовывать метод наименьших квадратов (OLS) на Python. OLS - это фундаментальный математический метод оптимизации, используемый в машинном обучении, особенно в задачах линейной регрессии.

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать функцию OLS для вычисления наклона (w1) и пересечения (w0) линейного уравнения на основе выборочных данных.
  • Как протестировать функцию OLS с использованием выборочных данных и проверить правильность результатов.

🏆 Достижения

После завершения этого проекта вы сможете:

  • Вывести формулы OLS для вычисления наклона и пересечения линейного уравнения.
  • Реализовать функцию OLS на Python без использования внешних библиотек.
  • Протестировать и валидировать функцию OLS с использованием выборочных данных.
  • Разобраться в важности метода OLS в машинном обучении и задачах линейной регрессии.

Реализовать функцию наименьших квадратов

В этом шаге вы реализуете функцию наименьших квадратов (OLS) на Python. Следуйте шагам ниже, чтобы завершить этот шаг:

  1. Откройте файл least_squares.py в вашем текстовом редакторе.

  2. Реализуйте функцию least_squares_function в соответствии с предоставленными спецификациями:

    • Функция должна принимать два входных параметра: x (список значений выборочных x) и y (список значений выборочных y).
    • Функция должна вычислять наклон (w1) и пересечение (w0) линейного уравнения с использованием формул OLS, предоставленных в описании задачи.
    • Функция должна округлить вычисленные значения w0 и w1 до двух знаков после запятой перед их возвратом.
    • Функция должна возвращать значения w0 и w1 в этом порядке.

Вот полная реализация функции 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. В следующих шагах вы можете изучить, как использовать эту функцию в реальной задаче машинного обучения.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться