🔗 #2
numbers = [10, 20, 30, 40]
for i in range(len(numbers)):
numbers[i] += i
print(numbers)
🥰3
Ответа на #3
Anonymous Quiz
0%
Цикл выполнен, 4
13%
1 2 3
13%
Цикл выполнен, 3
13%
3
25%
4
0%
1 2 4
0%
Ошибка
38%
динаху
0%
Цикл выполнен, 5
🥰2
🧑💻 Наконец, алгоритмы! Поговорим про алгоритм сортировки выбором. Будем честны, не самый эффективный алгоритм, но разобрать его стоит.
‼️ Итак, суть алгоритма в последовательном нахождении минимального или максимального элемента и перемещении его в конец или начало списка.
Давайте на примере:
🟰 Есть у нас неотсортированный список [16, 24, 20, 8, 2] и если вкратце, то берем наименьший элемент [2] и кидаем его в начало → [2, 16, 24, 20, 8] → дальше повторяем те же действия с другими числами, пока вся неотсортированная часть не будет отсортирована.
🐍 Тут все просто, теперь разберем код на Python, чтобы закрепить тему:
0️⃣ Для начала, создаем список listt:
1️⃣ Создаем цикл for для перебора по индексам всех элементов нашего списка от 1 до 5 (не включительно):
2️⃣ Создаем новую переменную внутри внешнего цикла 🟰
⚙️ Переменная 🟰
3️⃣ Создаем внешний цикл for, который будет проходиться по всем оставшимся элементам массива (после текущего элемента 𝑖, то есть, цикл будет проходить по неотсортированному списку) и искать элемент, который меньше того, который будет сохранен в переменную 🟰
4️⃣ Создаем условие для внутреннего цикла: будет проверяться, меньше ли текущий элемент списка 🟰
⭕️ Если это так, то обновляется значение 🟰
5️⃣ На пятом этапе, после кайфового завершения внутреннего цикла, когда найден минимальный элемент в неотсортированной части списка, происходит обмен местами этого минимального элемента с текущим элементом на позиции i
6️⃣ Выводим отсортированный список:
🔗 И сам код:
‼️ Итак, суть алгоритма в последовательном нахождении минимального или максимального элемента и перемещении его в конец или начало списка.
Давайте на примере:
🟰 Есть у нас неотсортированный список [16, 24, 20, 8, 2] и если вкратце, то берем наименьший элемент [2] и кидаем его в начало → [2, 16, 24, 20, 8] → дальше повторяем те же действия с другими числами, пока вся неотсортированная часть не будет отсортирована.
🐍 Тут все просто, теперь разберем код на Python, чтобы закрепить тему:
0️⃣ Для начала, создаем список listt:
listt = [16, 24, 20, 8, 2]
1️⃣ Создаем цикл for для перебора по индексам всех элементов нашего списка от 1 до 5 (не включительно):
for i in range(len(listt)):
2️⃣ Создаем новую переменную внутри внешнего цикла 🟰
min_index🟰 Туда мы будем сохранять текущий элемент i (Кароч, цикл будет предполагать, что текущая переменная цикла i — это минимальный элемент в неотсортированном списке. ⚙️ Переменная 🟰
min_index🟰 хранит индекс минимального элемента в оставшейся неотсортированной части списка.min_index = i
3️⃣ Создаем внешний цикл for, который будет проходиться по всем оставшимся элементам массива (после текущего элемента 𝑖, то есть, цикл будет проходить по неотсортированному списку) и искать элемент, который меньше того, который будет сохранен в переменную 🟰
min_index🟰for j in range(i + 1, len(listt)):
4️⃣ Создаем условие для внутреннего цикла: будет проверяться, меньше ли текущий элемент списка 🟰
listt[j]🟰 чем элемент переменной 🟰min_index🟰⭕️ Если это так, то обновляется значение 🟰
min_index🟰 и оно будет указывать на индекс этого нового минимального элемента.if listt[j] < listt[min_index]:
min_index = j
5️⃣ На пятом этапе, после кайфового завершения внутреннего цикла, когда найден минимальный элемент в неотсортированной части списка, происходит обмен местами этого минимального элемента с текущим элементом на позиции i
6️⃣ Выводим отсортированный список:
print("Отсортированный массив:", listt)🔗 И сам код:
listt = [16, 24, 20, 8, 2]
for i in range(len(listt)):
min_index = i
for j in range(i + 1, len(listt)):
if listt[j] < listt[min_index]:
min_index = j
listt[i], listt[min_index] = listt[min_index], listt[i]
print("Отсортированный массив:", listt)
5🤯3🥰1
🔗 Так, еще раз по циклу, чтобы было совсем понятно:
⚙️ Интересует нас именно эта часть кода:
🔗 Первая итерация:
0️⃣
1️⃣
2️⃣⭕️ Создаем внутренний цикл for от 1 до 5 (не включительно): на первой итерации
3️⃣ Теперь, условный оператор if:
🟰 Это условие нужно для поиска минимального элемента в неотсортированной части списка.
🟰 Дак вот, наш этот if будет проверять, меньше ли текущий элемент внутреннего цикла 🟰
4️⃣ Если текущий элемент j меньше, чем элемент 🟰
‼️ Каждая новая итерация будет способствовать тому, что будет меняться минимальный элемент с текущим элементом i
⚙️ Интересует нас именно эта часть кода:
listt = [16, 24, 20, 8, 2]
for i in range(len(listt)):
min_index = i
for j in range(i + 1, len(listt)):
if listt[j] < listt[min_index]:
min_index = j
🔗 Первая итерация:
0️⃣
i = 01️⃣
min_index = 02️⃣⭕️ Создаем внутренний цикл for от 1 до 5 (не включительно): на первой итерации
j = 13️⃣ Теперь, условный оператор if:
🟰 Это условие нужно для поиска минимального элемента в неотсортированной части списка.
🟰 Дак вот, наш этот if будет проверять, меньше ли текущий элемент внутреннего цикла 🟰
listt[j]🟰, чем текущий минимальный элемент 🟰listt[min_index]🟰if listt[j] < listt[min_index]:
4️⃣ Если текущий элемент j меньше, чем элемент 🟰
min_index🟰 → новый минимальный элемент сохраняется в j (Это нужно для сравнения оставшихся элементов с новым минимальным элементом)‼️ Каждая новая итерация будет способствовать тому, что будет меняться минимальный элемент с текущим элементом i
2👍2🥰1🤯1
🧑💻 Йоу гайс воссап, сегодня разберем код на C, чтобы вы особо не расслаблялись, вечерком надо разобрать код с ЕГЭ. Подписота у меня супер разная, поэтому надо угодить всем 🥰
🔗 Итак, задание Тайлера Дердена: Поработаем сегодня со строками в C. Допустим, нам нужно написать такой код, чтобы мы вводили строку, а этот самый код менял одни буквы на другие.
⭕️ Го делать:
🟰 Для начала, прикрепляю ссылку на навигацию по C (там другие разборы классных задач) — НАВИГАЦИЯ ПО C
0️⃣ Итак, поехали, первое, это подключения библиотеки для ввода - вывода данных:
1️⃣ Объявляем главную функцию:
2️⃣ Объявляем массив символов для хранения строки (После фигурной скобки будет табуляция кст), также объявляем максимальную длину, пусть будет символов 50:
3️⃣ Объявим переменную-счетчик для индексов символов строки (С каждой итерацией наша i будет увеличиваться на 1):
4️⃣ Было бы хорошо, если бы выводилась строка по типу 'Введите строку', так и запишем:
5️⃣ Дальше, код должен считать строку и записать ее в наш массив s, который мы записали на шаге 🟰2🟰
‼️ На этот случай есть такая функция — gets() или fgets().
⭕️ "Она считывает строку ввода до момента, пока не встретит символ новой строки (\n) или конец файла EOF".
❌ Проблема этой функции в том, что она не проверяет, сколько символов вводится, значит буфер может переполнится.
✅ Зато, есть fgets(), которая быстро считывает нашу строку, при этом, мы указываем максимальное количество символов для чтения.
✅ У этой функции три аргумента:
🔗 fgets(buffer, size, stdin); — 'синтаксис' нашей функции
🟰 buffer — это массив, в который записывается строка, у нас это s
🟰 Аргумент size — это максимальное количество символов, которые могут быть прочитаны (включая завершающий \0 — это тип конец строки в C, к примеру если мы введем строку длинной 7 символов, в массиве будет хранится ['C', 'o', 'd', 'e', ':L','a','b' '\0'])
🟰 Последний аргумент — это stdin (стандартный ввод), мы прописывали библиотеку
‼️ Кароч, как ИТОГ, fgets безопаснее работает, так как, мы указываем максимальный размер буфера, что предотвращает переполнение этого самого буфера.
🔗 Вводим такую строку:
6️⃣ Начнем с первого символа строки:
7️⃣ Пишем цикл while, который будет продолжаться до того момента, пока не встретит конец строки — '\0' (об этом уже поговорили)
8️⃣ Теперь условный оператор if, заменим, допустим, 'S' на 'K' (то есть, ввели строку, все S заменятся на K)
✅ Допустим, чтобы было понятно, я обратился к GPT, он мне выдал такую интересную штуку:
🔗 i сначала было равно 5.
🔗x получит значение 5 (так как сначала используется текущее значение переменной).
🔗Затем i станет равно 6 (после того, как операция инкремента выполнится).
9️⃣‼️ Выводим результат (Функция puts() используется для вывода строк на экран. ). Почему не printf? Потому что, как я сам лично понял, puts() немного попроще. Если нам нужно вывести просто строку без изменений, то лучше использовать puts(). А если нам нужно вывод переменных или другие 'действия над выводом', то используем printf().
🔟 И выводим нашу измененную строку:
🔗 Мы молодцы, теперь код:
🔗 Итак, задание Тайлера Дердена: Поработаем сегодня со строками в C. Допустим, нам нужно написать такой код, чтобы мы вводили строку, а этот самый код менял одни буквы на другие.
⭕️ Го делать:
🟰 Для начала, прикрепляю ссылку на навигацию по C (там другие разборы классных задач) — НАВИГАЦИЯ ПО C
0️⃣ Итак, поехали, первое, это подключения библиотеки для ввода - вывода данных:
#include <stdio.h>
1️⃣ Объявляем главную функцию:
main()
{
2️⃣ Объявляем массив символов для хранения строки (После фигурной скобки будет табуляция кст), также объявляем максимальную длину, пусть будет символов 50:
char s[50];
3️⃣ Объявим переменную-счетчик для индексов символов строки (С каждой итерацией наша i будет увеличиваться на 1):
int i;
4️⃣ Было бы хорошо, если бы выводилась строка по типу 'Введите строку', так и запишем:
printf("\n Введите строку \n");5️⃣ Дальше, код должен считать строку и записать ее в наш массив s, который мы записали на шаге 🟰2🟰
‼️ На этот случай есть такая функция — gets() или fgets().
⭕️ "Она считывает строку ввода до момента, пока не встретит символ новой строки (\n) или конец файла EOF".
❌ Проблема этой функции в том, что она не проверяет, сколько символов вводится, значит буфер может переполнится.
✅ Зато, есть fgets(), которая быстро считывает нашу строку, при этом, мы указываем максимальное количество символов для чтения.
✅ У этой функции три аргумента:
🔗 fgets(buffer, size, stdin); — 'синтаксис' нашей функции
🟰 buffer — это массив, в который записывается строка, у нас это s
🟰 Аргумент size — это максимальное количество символов, которые могут быть прочитаны (включая завершающий \0 — это тип конец строки в C, к примеру если мы введем строку длинной 7 символов, в массиве будет хранится ['C', 'o', 'd', 'e', ':L','a','b' '\0'])
🟰 Последний аргумент — это stdin (стандартный ввод), мы прописывали библиотеку
‼️ Кароч, как ИТОГ, fgets безопаснее работает, так как, мы указываем максимальный размер буфера, что предотвращает переполнение этого самого буфера.
🔗 Вводим такую строку:
fgets(s, 80, stdin);
6️⃣ Начнем с первого символа строки:
i = 0;
7️⃣ Пишем цикл while, который будет продолжаться до того момента, пока не встретит конец строки — '\0' (об этом уже поговорили)
while (s[i] != '\0')
{
8️⃣ Теперь условный оператор if, заменим, допустим, 'S' на 'K' (то есть, ввели строку, все S заменятся на K)
if (s[i] == 'S')
{
s[i] == 'K'
}
i ++; // Инкремент i++ увеличивает значение переменной на 1, при этом, сеачала возвращает текущее значение i, по сути, мы переходим к следующему символу
✅ Допустим, чтобы было понятно, я обратился к GPT, он мне выдал такую интересную штуку:
// Это просто пример, к коду нашему это не относится
int i = 5;
int x = i++;
🔗 i сначала было равно 5.
🔗x получит значение 5 (так как сначала используется текущее значение переменной).
🔗Затем i станет равно 6 (после того, как операция инкремента выполнится).
9️⃣‼️ Выводим результат (Функция puts() используется для вывода строк на экран. ). Почему не printf? Потому что, как я сам лично понял, puts() немного попроще. Если нам нужно вывести просто строку без изменений, то лучше использовать puts(). А если нам нужно вывод переменных или другие 'действия над выводом', то используем printf().
puts("\nРезультат:\n");🔟 И выводим нашу измененную строку:
puts(s);
return 0;
}
🔗 Мы молодцы, теперь код:
#include <stdio.h>
int main()
{
char s[80]; // Массив для строки
int i; // Счётчик
printf("\n Введите строку \n");
fgets(s, 80, stdin);
i = 0;
while (s[i] != '\0') // Цикл по строке до конца
{
if (s[i] == 'S') // Если символ 'A', заменяем его на 'B'
{
s[i] = 'K';
}
i++; // Переходим к следующему символу
}
puts("\nРезультат:\n");
puts(s);
return 0; //завершение программы
}
1🤯3🥰1
🧑💻 Всем доброе утро, пора бы взяться за степик. Задание — Факториал (7.3)
Подается натуральное число:
⭕️ Если заглянуть в текстовые данные, то n <= 12, поэтому сначала сделаем решение по условию.
Затем, счетчик для произведения:
Теперь, условный оператор в зависимости от нашего условия:
Основной цикл:
Ну, и последнее:
🔗 Сам код:
Подается натуральное число:
n = int(input())
⭕️ Если заглянуть в текстовые данные, то n <= 12, поэтому сначала сделаем решение по условию.
Затем, счетчик для произведения:
total = 1 # Счетчик равен 1 потому что это произведение, ну это так)
Теперь, условный оператор в зависимости от нашего условия:
if n <= 12:
Основной цикл:
total = total * i — эту запись сократим (тут если че наш счетчик для произведения умножается на счетчик цикла, так и получим факториал)for i in range(1, n + 1):
total *= i
Ну, и последнее:
print(total)
🔗 Сам код:
n = int(input())
total = 1
if n <= 12:
for i in range(1, n + 1):
total *= i
print(total)
10🤯3🥰1👨💻1👀1
🧑💻❤️ Гайс привет, сильно устаю за эти дни, надеюсь, вы меня поймете. В любом случае, завтра выкачу хороший пост, мб о машинке, мб код с вами разберем, а может и задание с ЕГЭ, в общем, проголосуете.
🔗 Разберем быстренько задание 'Без нулей'
🟰 Программа считывает числа (отличные от нуля) и выводит их произведение, вроде ниче сложного🟰
0️⃣ Для начала, счетчик для произведения (будет хранить результат):
1️⃣ Было бы с кайфом, если бы на каждой итерации цикла мы вводили число, так и запишем:
2️⃣ Ну и условие не забудем, нам как никак нули не нужны:
3️⃣:
🔗 Сам код:
🔗 Разберем быстренько задание 'Без нулей'
🟰 Программа считывает числа (отличные от нуля) и выводит их произведение, вроде ниче сложного🟰
0️⃣ Для начала, счетчик для произведения (будет хранить результат):
total = 1
1️⃣ Было бы с кайфом, если бы на каждой итерации цикла мы вводили число, так и запишем:
for i in range(10):
num = int(input())
2️⃣ Ну и условие не забудем, нам как никак нули не нужны:
if num != 0:
total *= num
3️⃣:
print(total)
🔗 Сам код:
total = 1
for i in range(10):
num = int(input())
if num != 0:
total *= num
print(total)
10🥰3🤯1👨💻1👀1
Разберем еще один код, выглядит очень уж интересно. (Задание 'Без нулей')
🔗 Тут используется вложенный генератор списка, 🟰
🔗 Внешний генератор —
🔗 i — это каждый элемент, который получается из внутреннего списка:
🔗 Внутренний список содержит 10 чисел, введённых пользователем через
🔗 Затем внешний генератор
🔗 Если условие
🔗 Сам код:
🔗 Тут используется вложенный генератор списка, 🟰
for _ in range(10)🟰 — цикл выполняется 10 раз и каждый раз запрашивает число от пользователя (нас) с помощью 🟰input()🟰🔗 Внешний генератор —
[i for i in [] if i != 0] — здесь цикл for проходит по всем элементам списка, созданного на предыдущем шаге.🔗 i — это каждый элемент, который получается из внутреннего списка:
[int(input()) for _ in range(10)]🔗 Внутренний список содержит 10 чисел, введённых пользователем через
input()🔗 Затем внешний генератор
[i for i in [] if i != 0] проходит по каждому элементу списка, а переменная i представляет текущее значение из этого списка на каждой итерации.🔗 Если условие
if i != 0 выполняется (то есть i не равно 0), то это значение i добавляется в итоговый список nums[].nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
🔗 Сам код:
nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
result = 1
for item in nums:
result *= item
print(result)
20🥰3🤯1👨💻1👀1
🧑💻 Я вечером подробно постараюсь разобрать на примере, как работает данный генератор
1🤯4🥰2
🧑💻 Итак, тут внешний генератор и внутренний, что какой делает, ща быстро разберем и я пойду спать:
Внутренний:
Если введем: 1, 1, 5, 3, 2, 4, 0, 2, 11, 0 → внутренний список будет: [1, 1, 5, 3, 2, 4, 0, 2, 11, 0 ]
Внешний генератор
По итогу, сначала создается временный список с помощью внутреннего генератора: 🟰
Всем споки 💤
Внутренний:
[int(input()) for _ in range(10)]: — здесь, цикл for на каждой итерации вызывает input(), который запрашивает ввод пользователя.Если введем: 1, 1, 5, 3, 2, 4, 0, 2, 11, 0 → внутренний список будет: [1, 1, 5, 3, 2, 4, 0, 2, 11, 0 ]
Внешний генератор
[i for i in [] if i != 0]: — Цикл проходит по каждому элементу списка (который мы создали во внутреннем генераторе), переменная i последовательно будет принимать значения каждого элемента из этого списка.nums = [i for i in [int(input()) for _ in range(10)] if i != 0]
По итогу, сначала создается временный список с помощью внутреннего генератора: 🟰
[int(input()) for _ in range(10)]🟰 Затем, внешний генератор проходит по каждому элементу временного списка, отбирая только те элементы, которые не равны нулю: 🟰[i for i in ... if i != 0]🟰Всем споки 💤
25🥰3🤯2👨💻1👀1
Всем доброе утро! 📈
👨🏼💻Расскажу вам про обучение с подкреплением — еще один тип машинного обучения, примеры таких моделей, вы, наверняка уже встречали (об этом дальше).
Итак, в этом типе машинного обучения никакие данные не передаются и мы «должны заставить компьютер выполнить задачу»
◽️Суть в том, что у нас есть какая-то окружающая среда, в этой среде агент (это программа или модель, которая принимает решение и потом выполняет действия на основе этих решений, агент взаимодействует со средой и на основе её откликов корректирует своё поведение).
◽️Состояние — это информация о текущем положении агента в среде. В каждый момент времени агент находится в каком-то состоянии.
◽️Также есть действия, которые агент выбирает на основе текущего состояния.
◽️Вознаграждение — это успешность действия агента (некая числовая оценка его действий)
◽️Политика — это стратегия, которую агент использует для достижения целей.
◽️Стоимость — награда, которая ожидается в долгосрочной перспективе.
⁉️ Эти некоторые термины ↑ нам нужно понимать для дальнейшего обучения;
‼️(ЕСЛИ ВЫ УЖЕ НА КРУТОМ УРОВНЕ, Я ПРИКРЕПЛЮ ПАРУ СТАТЕЙ ДЛЯ ЛИЧНОГО ОБУЧЕНИЯ)‼️
🧑💻 "Основное отличие обучения с подкреплением от классического машинного обучения заключается в том, что искусственный интеллект обучается в процессе взаимодействия с окружающей средой, а не на исторических данных"
Ща рассмотрим пример:
👨🏼💻Расскажу вам про обучение с подкреплением — еще один тип машинного обучения, примеры таких моделей, вы, наверняка уже встречали (об этом дальше).
Итак, в этом типе машинного обучения никакие данные не передаются и мы «должны заставить компьютер выполнить задачу»
◽️Суть в том, что у нас есть какая-то окружающая среда, в этой среде агент (это программа или модель, которая принимает решение и потом выполняет действия на основе этих решений, агент взаимодействует со средой и на основе её откликов корректирует своё поведение).
◽️Состояние — это информация о текущем положении агента в среде. В каждый момент времени агент находится в каком-то состоянии.
◽️Также есть действия, которые агент выбирает на основе текущего состояния.
◽️Вознаграждение — это успешность действия агента (некая числовая оценка его действий)
◽️Политика — это стратегия, которую агент использует для достижения целей.
◽️Стоимость — награда, которая ожидается в долгосрочной перспективе.
⁉️ Эти некоторые термины ↑ нам нужно понимать для дальнейшего обучения;
‼️(ЕСЛИ ВЫ УЖЕ НА КРУТОМ УРОВНЕ, Я ПРИКРЕПЛЮ ПАРУ СТАТЕЙ ДЛЯ ЛИЧНОГО ОБУЧЕНИЯ)‼️
🧑💻 "Основное отличие обучения с подкреплением от классического машинного обучения заключается в том, что искусственный интеллект обучается в процессе взаимодействия с окружающей средой, а не на исторических данных"
Ща рассмотрим пример:
1🥰3👨💻1
🧑💻 Полезные статьи:
https://www.baeldung.com/cs/ml-policy-reinforcement-learning — политика в обучении с подкреплением 📈
https://education.yandex.ru/handbook/ml/article/obuchenie-s-podkrepleniem — обучение с подкреплением 💲
https://habr.com/ru/companies/newprolab/articles/343834/ — Введение в обучение с подкреплением: от многорукого бандита до полноценного RL агента ⚙️
https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265 — Machine Learning for Humans, Part 5: Reinforcement Learning 💻
https://www.baeldung.com/cs/ml-policy-reinforcement-learning — политика в обучении с подкреплением 📈
https://education.yandex.ru/handbook/ml/article/obuchenie-s-podkrepleniem — обучение с подкреплением 💲
https://habr.com/ru/companies/newprolab/articles/343834/ — Введение в обучение с подкреплением: от многорукого бандита до полноценного RL агента ⚙️
https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265 — Machine Learning for Humans, Part 5: Reinforcement Learning 💻
👍2🥰1🤯1
🥶 Телега ограничивает количество ссылок и текста, поэтому:
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного изучения
__________________________________
🟰 Разбор упражнения в конце главы 🟰 Разъяснения и ответы
__________________________________
⚙️ Линейная регрессия (Начало конца💀)
⚙️ Начинаем разбирать пример
⚙️ Рассматриваем пример из книги
⚙️ Сдвиг, наклон и другие прелести
⚙️ Говорим про наклон
⚙️ Алгоритм формулы линейной регрессии (просто как работает формула)
__________________________________
🟰Н А В И Г А Ц И Я🟰
‼️ ПРЕДЫДУЩИЙ ПОСТ О МАШИННОМ ОБУЧЕНИИ
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного изучения
__________________________________
🟰 Разбор упражнения в конце главы 🟰 Разъяснения и ответы
__________________________________
⚙️ Линейная регрессия (Начало конца💀)
⚙️ Начинаем разбирать пример
⚙️ Рассматриваем пример из книги
⚙️ Сдвиг, наклон и другие прелести
⚙️ Говорим про наклон
⚙️ Алгоритм формулы линейной регрессии (просто как работает формула)
__________________________________
🟰Н А В И Г А Ц И Я🟰
‼️ ПРЕДЫДУЩИЙ ПОСТ О МАШИННОМ ОБУЧЕНИИ
👍2🤯1