🔗 Ку, сегодня будет пост по машинному обучению, всем продуктивного и кайфового дня 😋
Telegram
CodeLab
🥶 Телега ограничивает количество ссылок и текста, поэтому:
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного…
Навигация по Машинному обучению (2)
🔗 Обучение с подкреплением (Рассматриваем пример ниже)
🔗 Функция вознаграждения
🔗 Рассматриваем две политики
🔗 Оценка политик
🔗 Полезные статьи для личного…
❤🔥2👍2❤1🥰1
Сори гайс, день был очень загруженный, завтра напишу полноценный пост
А пока, держите:
А пока, держите:
def get_name_and_decades(name, age):
print(f"My name is {name} and I'm {age / 10:.5f} decades old.")
get_name_and_decades("Leo", 31)
3❤🔥2🥰1
Всем Доброе утро!
🧑💻Ща мы быстренько разберем конец программы, вчера совсем забегался, но зато сегодня - завтра опубликую несколько хороших постов 😋
0️⃣ Последнее, на чем мы остановились, это создание словаря, где ключ-значение — это Имя студента и рассчитанный по формуле средний балл.
1️⃣ Теперь выведем средние баллы студентов (пока что без порога)
2️⃣ Нам нужно как то найти тех самых отличившихся студентов, поэтому пусть программа спросит порог для оценивания (для последующего вывода студентов с баллами выше порога)
‼️ Касаемо функции
3️⃣‼️ На данном этапе функция
3️⃣🔗 Теперь проверим, если у нас в словаре есть ключ - значение для студентов с их оценками (выше порога, конечно)
4️⃣🔗 Теперь выведем студента с наивысшим средним баллом:
5️⃣🔗 Пишем повтор программы (вдруг мы что-то не ввели), иначе программа останавливается
🧑💻 Итак, мы это все дописали, постараюсь днем выложить пару тестиков, чтобы вы не расслаблялись особо, а вечером мы скомпонуем весь код и посмотрим что как работает.
🧑💻Ща мы быстренько разберем конец программы, вчера совсем забегался, но зато сегодня - завтра опубликую несколько хороших постов 😋
0️⃣ Последнее, на чем мы остановились, это создание словаря, где ключ-значение — это Имя студента и рассчитанный по формуле средний балл.
1️⃣ Теперь выведем средние баллы студентов (пока что без порога)
print("\nСредний балл студентов:")
for name, average_rating in student_averages.items():
print(f"{name}: {average_rating:.2f}") #округление среднего балла до двух знаков после запятой2️⃣ Нам нужно как то найти тех самых отличившихся студентов, поэтому пусть программа спросит порог для оценивания (для последующего вывода студентов с баллами выше порога)
threshold = float(input("\nВведите порог для вывода студентов с баллом выше: "))
top_students = get_top_students(student_averages, threshold)‼️ Касаемо функции
🟰get_top_students()🟰, о ней мы писали тут (Если что, она возвращает студентов с баллами выше порога. который мы ставим сами)3️⃣‼️ На данном этапе функция
get_top_students выбирает из словаря student_averages только тех студентов, чей средний балл выше указанного порога (у нас это переменная threshold), и сохраняет их в новый словарь top_students. Этот наш новый словарь содержит только тех студентов, которые прошли этот фильтр, то есть у которых средний балл больше порога.3️⃣🔗 Теперь проверим, если у нас в словаре есть ключ - значение для студентов с их оценками (выше порога, конечно)
if top_students: # Если тут есть данные, то:
print("\nСтуденты с баллом выше порога:")
for name, average_rating in top_students.items():
print(f"{name}: {avg:.2f}") #Выводим данные по студентам на экран (ключ - значение)
else:
print("Нет студентов с баллом выше порога.")
4️⃣🔗 Теперь выведем студента с наивысшим средним баллом:
print_top_student(student_averages)
5️⃣🔗 Пишем повтор программы (вдруг мы что-то не ввели), иначе программа останавливается
repeat = input("\nХотите ввести данные заново? (да/нет): ").lower()
if repeat != 'да':
print("Программа завершена.")
break🧑💻 Итак, мы это все дописали, постараюсь днем выложить пару тестиков, чтобы вы не расслаблялись особо, а вечером мы скомпонуем весь код и посмотрим что как работает.
17🤓3❤🔥2❤1🥰1
🗂Необходимо собрать и вывести все уникальные слова из строки рекламного текста. Какой из перечисленных типов данных🐍 Python подходит лучше всего?
Anonymous Quiz
10%
кортеж (tuple)
67%
множество (set)
10%
словарь (dict)
14%
список (list)
❤🔥2❤1👍1🥰1
👨💻 Для чего в Python используется встроенная функция enumerate()?
Anonymous Quiz
10%
Для определения количества элементов последовательности
5%
Для сортировки элементов по значениям id
71%
Для одновременного итерирования по самим элементам и их индексам
14%
Для перебора элементов списка или любого другого набора данных
❤🔥2❤1👍1🥰1
🧑💻 Вот и готов наш код, завтра допишу навигацию, чтобы вы с кайфом могли с этим всем разобраться:
def student_data():
students = {}
while True:
name = input("Введите имя студента, или 'стоп' для завершения ввода: ")
if name.lower() == 'стоп':
break
try:
grades = list(map(float, input(f"Введите оценки для {name} через пробел: ").split()))
students[name] = grades
except ValueError:
print("ERROR")
return students
def calculate_average(grades):
return sum(grades) / len(grades) if grades else 0
def get_top_students(students, threshold):
return {name: average_rating for name, average_rating in students.items() if average_rating > threshold}
def print_top_student(students):
if not students:
print("Нет данных о студентах.")
return
top_student = max(students, key=students.get)
print(f"Студент с наивысшим средним баллом: {top_student} ({students[top_student]:.2f})")
def main():
while True:
students = student_data()
if not students:
print("Нет данных для анализа.")
continue
student_averages = {name: calculate_average(grades) for name, grades in students.items()}
print("\nСредний балл студентов:")
for name, average_rating in student_averages.items():
print(f"{name}: {average_rating:.2f}")
threshold = float(input("\nВведите порог для вывода студентов с баллом выше: "))
top_students = get_top_students(student_averages, threshold)
if top_students:
print("\nСтуденты с баллом выше порога:")
for name, average_rating in top_students.items():
print(f"{name}: {average_rating:.2f}")
else:
print("Нет студентов с баллом выше порога.")
print_top_student(student_averages)
repeat = input("\nХотите ввести данные заново? (да/нет): ").lower()
if repeat != 'да':
print("Программа завершена.")
break
main()
14❤🔥2🤯2👍1🤓1👨💻1
Как то пару дней назад я делал тест с такой функцией, давайте быстренько ее разберем:
0️⃣ Для начала объявим функцию 🟰
1️⃣ Внутри 'внешней функции' будет находиться
2️⃣ После того, как мы объявили функцию
3️⃣ Кароч, чтобы было понятно: мы передаем аргумент n = 4 в 🟰
Тройка передается в multiply и становится значением x. Ну, тут точно также как с четверкой, 3 * 3 = 9. Два результата складываются и получаем 25
def func_1(n):
def multiply(x):
return x * x
return multiply(n) + multiply(n - 1)
result = func_1(4)
print(result)
0️⃣ Для начала объявим функцию 🟰
def func_1(n):🟰‼️ Как раз туда мы и передадим аргумент 4 1️⃣ Внутри 'внешней функции' будет находиться
🟰def multiply(x):🟰, она будет возвращать квадрат числа (x * x). 2️⃣ После того, как мы объявили функцию
🟰def multiply(x):🟰, во 'внешнюю' функцию 🟰def func_1(n):🟰 возвращается сумма двух вызовов multiply return multiply(n) + multiply(n - 1)
3️⃣ Кароч, чтобы было понятно: мы передаем аргумент n = 4 в 🟰
func_1🟰 → затем, в функции 🟰func_1🟰 определена функция 🟰multiply(x)🟰, при ее вызове мы как раз передаем аргумент x → воот, внутри функции multiply, x = 4 (‼️Потому что n — это просто переменная func_1, которую мы передаем в multiply как аргумент x, когда вызываем multiply(n)‼️), → x * x даст 4 * 4 = 16 → multiply(n - 1) — это вызов multiply(3). Тройка передается в multiply и становится значением x. Ну, тут точно также как с четверкой, 3 * 3 = 9. Два результата складываются и получаем 25
19❤🔥3❤1🥰1
CodeLab
⚙️ Итак, здарова работяги, ща рассмотрим пример из книги: 👨💻Сам пример посложнее, мы можем близко предсказать, но вот с точностью могут быть проблемы. 🔗 Таблица показывает данные о домах с разным количеством комнат и их ценах. ⭕️ Цена дома напрямую зависит…
🧑💻 Так, продолжаем машинку, завтра мб выложу тесты)
Помните мы написали формулу цена=100+50×количество комнат+небольшое расхождение.
⭕️ Когда мы говорим, что наклон
прямой равен 50, это означает, что каждый раз, добавляя в дом одну комнату, мы вычисляем, что цена дома вырастет на 50 долларов. Когда говорим, что y-пересечение прямой равно 100, это означает, что стоимость гипотетического
дома с нулевым количеством комнат базовая — 100 долларов.
Помните мы написали формулу цена=100+50×количество комнат+небольшое расхождение.
⭕️ Когда мы говорим, что наклон
прямой равен 50, это означает, что каждый раз, добавляя в дом одну комнату, мы вычисляем, что цена дома вырастет на 50 долларов. Когда говорим, что y-пересечение прямой равно 100, это означает, что стоимость гипотетического
дома с нулевым количеством комнат базовая — 100 долларов.
4❤🔥2🥰1
CodeLab
🔗 Начнем сразу с примера: 🔗 Абсолютно каждому подписчику этого великого канала будет ясно, что вместо вопросиков будет число 4500. Отсюда можем вывести формулу нахождения каждого последующего значения: ⚙️ Продажи = 5 × Реклама + 1500 Отлично, теперь разберемся…
‼️ Я советую также повторить все эти посты для понимания того, что мы делаем.
🤓3❤🔥2
🟰Алгоритм линейной регрессии🟰
Немного теории, которая нам пригодится:
🔗 Входные данные — набор точек на плоскости.
🔗 Результат — прямая, проходящая близко к точкам
🔗 Процедура — выбираем случайную прямую → выбираем случайную точку данных → перемещаем прямую немного ближе к ней ( повторяем это )
🔗 Возврат — полученная прямая
p — цена дома в наборе данных;
Y — прогнозируемая цена дома;
r — количество комнат;
m — цена за комнату;
b — базовая цена за дом.
Теперь формула:
🟰Y = mr + b🟰 — прогнозируемая цена = цена за комнату × количество комнат + базовая цена дома
⭕️ Допустим, цена за комнату — 50000, у нас 3 комнаты в доме, а базовая цена 200000, как мог бы выглядеть код:
Немного теории, которая нам пригодится:
🔗 Входные данные — набор точек на плоскости.
🔗 Результат — прямая, проходящая близко к точкам
🔗 Процедура — выбираем случайную прямую → выбираем случайную точку данных → перемещаем прямую немного ближе к ней ( повторяем это )
🔗 Возврат — полученная прямая
p — цена дома в наборе данных;
Y — прогнозируемая цена дома;
r — количество комнат;
m — цена за комнату;
b — базовая цена за дом.
Теперь формула:
🟰Y = mr + b🟰 — прогнозируемая цена = цена за комнату × количество комнат + базовая цена дома
⭕️ Допустим, цена за комнату — 50000, у нас 3 комнаты в доме, а базовая цена 200000, как мог бы выглядеть код:
def predict_price(m, r, b):
return m * r + b
price_per_room = 50000
number_of_rooms = 3
base_price = 200000
predicted_price = predict_price(price_per_room, number_of_rooms, base_price)
print(f"Прогнозируемая цена дома: ${predicted_price}")
5❤🔥2👍1🤓1👨💻1
def multiply(a = 2, b=7):
return a * b
result = multiply(3) print(result)
return a * b
result = multiply(3) print(result)
Anonymous Quiz
19%
3
0%
6
6%
7
0%
24
56%
21
19%
14
❤🔥2🤓2
Опрос будет внизу под постом 👇🏻
def func(x):
return x + 5
def main():
return func(5) + func(10)
print(main())
3❤🔥2👨💻1
🧑💻 Всем ку, разберем небольшой код с утра:
📈 Итак, в чем суть, у нас есть строка "aaabbvvvvccd", а мы будем должны ее сократить как то так -- a3b2v4c2d1
0️⃣ Объявим функцию для начала
1️⃣ Создадим список (туда будем заносить измененные строчки) и счетчик (для подсчета повторяющихся букв):
2️⃣🔗 Теперь основной цикл:
3️⃣⚙️ Иначе:
4️⃣🔗 После завершения цикла мы добавляем последний символ и его количество в список (последний символ не будет обработан в цикле)
🔗Весь код:
📈 Итак, в чем суть, у нас есть строка "aaabbvvvvccd", а мы будем должны ее сократить как то так -- a3b2v4c2d1
0️⃣ Объявим функцию для начала
def compress_string(s): и проверим строку на наличие символов. Типо если строка s пустая, функция возвращает пустую строку. def compress_string(s):
if not s:
return " "
1️⃣ Создадим список (туда будем заносить измененные строчки) и счетчик (для подсчета повторяющихся букв):
listt = []
count = 1
2️⃣🔗 Теперь основной цикл:
for i in range(1, len(s)): # Мы начинаем с индекса 1 (у нас это второй символ) и проходим по всей строке до конца
if s[i] == s[i - 1]: # Если текущий равен предыдущему:
count += 1 # Увеличиваем счетчик на 1
3️⃣⚙️ Иначе:
else:
listt.append(s[i - 1] + str(count)) #Если текущий символ не равен предыдущему, последовательность закончилась. Это значит, что вся строка добавляет в список listt[] строку, состоящую из символа и его количества (как раз то, что нам нужно)
count = 1 # Обновляем счетчик, чтобы начать подсчет для новой буквы
4️⃣🔗 После завершения цикла мы добавляем последний символ и его количество в список (последний символ не будет обработан в цикле)
listt.append(s[-1] + str(count)) # Мы соединяем все элементы в списке listt в одну строку с помощью ''.join(listt) и возвращаем результат
return ''.join(listt) # Об этом поговорим еще сегодня
print(compress_string("aaabbvvvvccd"))🔗Весь код:
def compress_string(s):
if not s:
return " "
listt = []
count = 1
for i in range(1, len(s)):
if s[i] == s[i - 1]:
count += 1
else:
listt.append(s[i - 1] + str(count))
count = 1
listt.append(s[-1] + str(count))
return ''.join(listt)
print(compress_string("aaabbvvvvccd"))
7❤🔥2🥰1🤯1🤡1👨💻1
🧑💻 #1 Выполним несколько тестов
def func(a, *args, **kwargs):
print(a, args, kwargs)
func(1, 2, 3, x=4, y=5)
1❤🔥2👍1🤓1
Да, знаю, что мы это не проходили, завтра разберемся) Хотя, если среди вас есть те, кто шарит, смело объясняйте в коментах
Anonymous Quiz
33%
1 (2, 3) {'x': 4, 'y': 5}
40%
1 [2, 3] {'x': 4, 'y': 5}
27%
1 (2, 3, {'x': 4, 'y': 5})
0%
2 (1, 3, {'x': 4, 'y': 5})
❤🔥2❤1👍1🥰1
#2 🌶
def func(x, y=[]):
y.append(x)
return y
list1 = func(1)
list2 = func(2, [])
list3 = func(3)
print(list1, list2, list3)
1❤🔥2❤1👍1👀1
Какой будет ответ? (Завтра также разберем)
Anonymous Quiz
43%
[1] [2] [3]
29%
[1, 3] [2] [1, 3]
21%
[1] [2] [1, 3]
7%
[1, 2, 3] [1, 2, 3] [1, 2, 3]
❤🔥2❤1👍1🥰1
🧑💻 Всем добрый вечер гайс
🔗 Как и говорил, рассмотрим метод join(). Этот метод используется в Python для объединения списка строк в одну строку с использованием указанного разделителя.
🔗 Использование другого разделителя (запятая и пробел):
🔗 Также есть случаи, когда элементы последовательности не являются строками, в таком случае приводим их к нужному типу данных.
🔗 Как и говорил, рассмотрим метод join(). Этот метод используется в Python для объединения списка строк в одну строку с использованием указанного разделителя.
words = ["Hello", "Code", "Lab", "is", "awesome"]
result = " ".join(words)
print(result) # Вывод: "Hello Code Lab is awesome"
🔗 Использование другого разделителя (запятая и пробел):
fruits = ["Hello", "Code", "Lab", "is", "awesome"]
result = ", ".join(fruits)
print(result) # Вывод: "Hello, Code, Lab, is, awesome"
🔗 Также есть случаи, когда элементы последовательности не являются строками, в таком случае приводим их к нужному типу данных.
numbers = [1, 2, 3]
result = "-".join(map(str, numbers))
print(result) # Вывод: "1-2-3"
1❤🔥2🤯1🤡1🤓1
🧑💻Всем ку, сейчас разберем вот такую функцию ↓
🔗 Как раз постараемся понять что такое этот ваш **кваргс и *аргс
0️⃣ Ну для начала базировано объявляем функцию:
⚙️ Из аргументов у нас есть a (обычный аргумент, мы их обычно и передаем в других примерах), *args (Позиционные аргументы) и **kwargs (Именованные аргументы) — сейчас со всем разберемся
Для начала, разберемся с таким оператором как 🟰
⁉️ Че он делает? Он буквально распаковывает элементы из коллекций (у нас это списки, кортежи или множества)
💬 — Мысль не моя, но автор статьи пояснил очень неплохо, вот вам пример:
📊 Вот еще пример, но уже с нашей любимой функцией:
‼️ Если вы подумали, что на одной звездочке все закончится, как бы не так)
🔗 Ведь существует оператор 🟰
🔗 Как раз постараемся понять что такое этот ваш **кваргс и *аргс
def func(a, *args, **kwargs):
print(a, args, kwargs)
func(1, 2, 3, x=4, y=5)
0️⃣ Ну для начала базировано объявляем функцию:
⚙️ Из аргументов у нас есть a (обычный аргумент, мы их обычно и передаем в других примерах), *args (Позиционные аргументы) и **kwargs (Именованные аргументы) — сейчас со всем разберемся
def func(a, *args, **kwargs):
Для начала, разберемся с таким оператором как 🟰
* 🟰⁉️ Че он делает? Он буквально распаковывает элементы из коллекций (у нас это списки, кортежи или множества)
"Я могу описать его как оператор расширения, распаковывающий наборы домино, чтобы потом выстроить из них одну единую огромную последовательность."
💬 — Мысль не моя, но автор статьи пояснил очень неплохо, вот вам пример:
a = [1,2,3]
b = [*a,4,5,6] # мы берем содержимое списка a и распаковываем его в новый список b
print(b) # [1,2,3,4,5,6]
📊 Вот еще пример, но уже с нашей любимой функцией:
def func(x, y, z):
return x + y + z
numbers = [1, 2, 3]
result = func(*numbers) # Распаковываем список в отдельные аргументы
print(result) # Вывод: 6
‼️ Если вы подумали, что на одной звездочке все закончится, как бы не так)
🔗 Ведь существует оператор 🟰
** 🟰. Нужен он для распаковки словарей, превращая пары ключ-значение в отдельные именованные аргументы: data = {'name': 'Brovscki', 'age': 21}
def greeting(name, age):
print(f"Hello, {name}! You are {age} years old.")
greeting(**data) # Вывод: Hello, Brovscki! You are 21 years old7❤🔥3👍2❤1🤓1👀1