Skip to content

Шаблон отчета по лабораторной работе #1 курса "Анализ данных [в ГеймДеве] в примерах и задачах"

Notifications You must be signed in to change notification settings

SomEnaMeforme/DA-in-GameDev-lab1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 

Repository files navigation

АНАЛИЗ ДАННЫХ И ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ [in GameDev]

Отчет по лабораторной работе #1 выполнил(а):

  • Рушкова Ольга Игоревна
  • РИ210940 Отметка о выполнении заданий (заполняется студентом):
Задание Выполнение Баллы
Задание 1 * 60
Задание 2 * 20
Задание 3 * 20

знак "*" - задание выполнено; знак "#" - задание не выполнено;

Работу проверили:

  • к.т.н., доцент Денисов Д.В.
  • к.э.н., доцент Панов М.А.
  • ст. преп., Фадеев В.О.

N|Solid

Build Status

Структура отчета

  • Данные о работе: название работы, фио, группа, выполненные задания.
  • Цель работы.
  • Задание 1.
  • Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
  • Задание 2.
  • Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
  • Задание 3.
  • Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
  • Выводы.
  • ✨Magic ✨

Цель работы

Ознакомиться с основными операторами языка Python на примере реализации линейной регрессии.

Задание 1

Код реализации представлен в виде скринов Скрины реализации первого задания: изображение изображение изображение изображение

Задание 2

Пошагово выполнить каждый пункт раздела "ход работы" с описанием и примерами реализации задач

Ход работы:

  • Произвести подготовку данных для работы с алгоритмом линейной регрессии. 10 видов данных были установлены случайным образом, и данные находились в линейной зависимости. Данные преобразуются в формат массива, чтобы их можно было вычислить напрямую при использовании умножения и сложения. изображение

  • Определите связанные функции. Функция модели: определяет модель линейной регрессии wx+b. Функция потерь: функция потерь среднеквадратичной ошибки. Функция оптимизации: метод градиентного спуска для нахождения частных производных w и b. изображение

  • Первая итерация: Инициализация и модель итеративной оптимизации изображение

  • Вторая итерация: отображаются значения параметров, значение потерь и эффекты визуализации изображение

  • Третья итерация: отображаются значения параметров, значение потерь и эффекты визуализации изображение

  • Четвёртая итерация: отображаются значения параметров, значение потерь и эффекты визуализации изображение

  • Пятая итерация: отображаются значения параметров, значение потерь и эффекты визуализации изображение

  • Тысячная итерация: отображаются значения параметров, значение потерь и эффекты визуализации изображение Код реализации:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = [3, 21, 22, 34, 54, 34, 55, 67, 89, 99]
x = np.array(x)
y = [2, 22, 24, 65, 79, 82, 55, 130, 150, 199]
y = np.array(y)
plt.scatter(x,y)


def model(a, b, x):
    return a * x + b
 
 
def loss_function(a, b, x, y):
    num = len(x)
    prediction = model(a, b, x)
    return (0.5 / num) * (np.square(prediction - y)).sum()
 
 
def optimize(a, b, x, y):
    num = len(x)
    prediction = model(a, b, x)
    da = (1.0 / num) * ((prediction - y) * x).sum()
    db = (1.0 / num) * ((prediction - y).sum())
    a = a - Lr * da
    b = b - Lr * db
    return a, b
 
 
def iterate(a, b, x, y, times):
    for i in range(times):
        a, b = optimize(a, b, x, y)
    return a, b

a = np.random.rand(1)
b = np.random.rand(1)
Lr = 0.000001
 
a, b = iterate(a, b, x, y, 10000000)

prediction = model(a, b, x)
loss = loss_function(a, b, x, y)
print(a, b, loss)
plt.scatter(x, y)
plt.plot(x, prediction)

Задание 3.1

Должна ли величина loss стремиться к нулю при изменении исходных данных? Ответьте на вопрос, приведите пример выполнения кода, который подтверждает ваш ответ.

Да, должна, так как в результате алгоритма мы должны получить линейную функцию, которая минимизирует значение потерь, следовательно, если представить в массивах исходных данных значение x и y, приблизительно соответствующие некой линейной функции, то в результате выполнения прога\раммы мы сможем получить функцию, которая сводит величину loss (значение потерь) к нулю. Ту же тенденцию можно заметить и в приведённом выше задании 2. изображение изображение изображение

Задание 3.2

Какова роль параметра Lr? Ответьте на вопрос, приведите пример выполнения кода, который подтверждает ваш ответ. В качестве эксперимента можете изменить значение параметра.

Параметр Lr регулирует скорость обучения нашей программы и влияет на то, насколько сильно мы меняем коэффициенты a и b для приближения нашей модели к той, что сведёт функцию потерь к минимуму. От величины Lr зависит успешность выполнения программы, так как если выбрать слишком маленькую скорость обучения, то программе понадобится слишком много итерация для получения нужного значения, а если - слишком большую, то велика вероятность просто перескочить через нужные значения коэффициентов в ходе выполнения программы. изображение изображение изображение

Выводы

Абзац умных слов о том, что было сделано и что было узнано: В данной лабораторной работе я познакомилась с алгоритмом линейной регрессии: узнала принципы его работы и основные функции, которые использует данный алгоритм. Также установила необходимое программное обеспечение в виде Unity и создала свой первый проект, а такж ознакомилась с основными операторами языка Python и работой в google.colab

Plugin README
Dropbox [plugins/dropbox/README.md][PlDb]
GitHub [plugins/github/README.md][PlGh]
Google Drive [plugins/googledrive/README.md][PlGd]
OneDrive [plugins/onedrive/README.md][PlOd]
Medium [plugins/medium/README.md][PlMe]
Google Analytics [plugins/googleanalytics/README.md][PlGa]

Powered by

BigDigital Team: Denisov | Fadeev | Panov

About

Шаблон отчета по лабораторной работе #1 курса "Анализ данных [в ГеймДеве] в примерах и задачах"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published