Какой метод добавляет элемент в конец списка?
Anonymous Quiz
14%
insert()
79%
append()
7%
extend()
0%
pop()
Зачем нужен метод __init__() в классе?
Anonymous Quiz
23%
Для создания объекта класса.
54%
Для инициализации атрибутов объекта
23%
Для обработки исключений
0%
Для удаления объекта
for epoch in range(epochs):
for x, y_true in zip(data, all_y_trues):
Forward propagation (также известное как прямой проход) — процесс передачи входных данных через слои нейронной сети для генерации вывода
sum_h1 = self.w1 * x[0] + self.w2 * x[1] + self.b1
h1 = sigmoid(sum_h1)
sum_h2 = self.w3 * x[0] + self.w4 * x[1] + self.b2
h2 = sigmoid(sum_h2)
sum_o1 = self.w5 * h1 + self.w6 * h2 + self.b3
o1 = sigmoid(sum_o1)
y_pred = o1
d_l_d_pred = -2 * (y_true - y_pred)
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑💻 🧑💻 Регрессионные модели определяются их весами и смещением — параметрами модели. Однако перед обучением модели мы можем подкрутить множество других ручек, таких как скорость обучения,количество периодов, степень (если рассматривать модель полиномиальной
регрессии) и многие другие. Они называются
гиперпараметрами.
🔵 Любая величина, которую вы устанавливаете перед процессом обучения — это гиперпараметр;🔵 Любая величина, которую модель создает или изменяет в процессе обучения — это параметр.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой метод в библиотеке scikitlearn используется для разделения данных на обучающую и тестовую выборки?
Anonymous Quiz
64%
train_test_split()
18%
split_data()
18%
divide_dataset()
0%
data_split()
Какой из следующих параметров в линейной регрессии отвечает за наклон прямой?
Anonymous Quiz
45%
intercept
36%
slope
9%
coefficient
9%
bias
Какой показатель используется для оценки качества линейной регрессии?
Anonymous Quiz
0%
Precision
23%
F1-score
54%
R-squared
23%
Accuracy
Что выведет код?
my_dict = {'a': 1, 'b': 2, 'c': 3}
print(my_dict.get('d', 4))
my_dict = {'a': 1, 'b': 2, 'c': 3}
print(my_dict.get('d', 4))
Anonymous Quiz
8%
1
0%
2
58%
4
8%
3
25%
2765
a = [1, 2, 3]
b = a
b.append(4) print(a)
b = a
b.append(4) print(a)
Anonymous Quiz
29%
[1, 2, 3]
53%
[1, 2, 3, 4]
0%
[4, 3, 2, 1]
18%
Ошибка
0%
[4]
d_pred_d_w5 = h1 * deriv_sigmoid(sum_o1)
d_pred_d_w6 = h2 * deriv_sigmoid(sum_o1)
d_pred_d_b3 = deriv_sigmoid(sum_o1)
d_ypred_d_h1 = self.w5 * deriv_sigmoid(sum_o1)
d_ypred_d_h2 = self.w6 * deriv_sigmoid(sum_o1)
d_h1_d_w1 = x[0] * deriv_sigmoid(sum_h1)
d_h1_d_w2 = x[1] * deriv_sigmoid(sum_h1)
d_h1_d_b1 = deriv_sigmoid(sum_h1)
d_h2_d_w3 = x[0] * deriv_sigmoid(sum_h2)
d_h2_d_w4 = x[1] * deriv_sigmoid(sum_h2)
d_h2_d_b2 = deriv_sigmoid(sum_h2)
d_pred_d_w5 = h1 * deriv_sigmoid(sum_o1) — здесь sum_o1 это взвешенная сумма (сумма входных данных, умноженных на их веса, плюс смещение (bias)) на выходном нейронеЕсли h1 большое, w5 сильнее влияет на o1
d_pred_d_w6 = h2 * deriv_sigmoid(sum_o1) — тут аналогично только для w6 (проще говоря, тут показано влияение w6 на o1)d_pred_d_b3 = deriv_sigmoid(sum_o1) — ( влияние смещения на выход)d_ypred_d_h1 = self.w5 * deriv_sigmoid(sum_o1) — итак, здесь показано насколько вес w5 влияет на выход, для h2 выйдет аналогично...d_h1_d_w1 = x[0] * deriv_sigmoid(sum_h1) — вес w1 умножается на градиент сигмоиды, аналогично будет для w2 и влияния смещения — d_h1_d_b1 = deriv_sigmoid(sum_h1) d_h2_d_w3 = x[0] * deriv_sigmoid(sum_h2), аналогично для w4 и влияния смещения — d_h2_d_b2 = deriv_sigmoid(sum_h2)🔜 Каждый параметр уменьшается на некую величину, зависящую от градиентов и learn_rate (скорости обучения). Это делает предсказания точнее.
self.w1 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_w1
self.w2 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_w2
self.b1 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_b1
self.w3 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_w3
self.w4 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_w4
self.b2 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_b2
self.w5 -= learn_rate * d_l_d_pred * d_pred_d_w5
self.w6 -= learn_rate * d_l_d_pred * d_pred_d_w6
self.b3 -= learn_rate * d_l_d_pred * d_pred_d_b3
if epoch % 10 == 0:
y_preds = np.array([self.feedforward(x) for x in data])
loss = mse_loss(all_y_trues, y_preds)
print(f"Epoch {epoch} loss: {loss:.3f}")
Здесь мы имеем 4 примера и переменную all_y_trues, которая содержит правильные метки или ответы, тут, как вам удобно.
data = np.array([
[-2, -1],
[25, 6],
[17, 4],
[-15, -6]
])
all_y_trues = np.array([1, 0, 0, 1])
network = OurNeuralNetwork()
network.train(data, all_y_trues)
Please open Telegram to view this post
VIEW IN TELEGRAM
А вот он и весь код:
🔤 🔤 🔤 🌹 🔤 🪷 🔤 🔤 🌷 🌸 🔤 🌹 🔤
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def deriv_sigmoid(x):
fx = sigmoid(x)
return fx * (1 - fx)
def mse_loss(y_true, y_pred):
return ((y_true - y_pred) ** 2).mean()
class OurNeuralNetwork:
def __init__(self):
self.w1 = np.random.normal()
self.w2 = np.random.normal()
self.w3 = np.random.normal()
self.w4 = np.random.normal()
self.w5 = np.random.normal()
self.w6 = np.random.normal()
self.b1 = np.random.normal()
self.b2 = np.random.normal()
self.b3 = np.random.normal()
def feedforward(self, x):
h1 = sigmoid(self.w1 * x[0] + self.w2 * x[1] + self.b1)
h2 = sigmoid(self.w3 * x[0] + self.w4 * x[1] + self.b2)
o1 = sigmoid(self.w5 * h1 + self.w6 * h2 + self.b3)
return o1
def train(self, data, all_y_trues):
learn_rate = 0.1
epochs = 1000
for epoch in range(epochs):
for x, y_true in zip(data, all_y_trues):
sum_h1 = self.w1 * x[0] + self.w2 * x[1] + self.b1
h1 = sigmoid(sum_h1)
sum_h2 = self.w3 * x[0] + self.w4 * x[1] + self.b2
h2 = sigmoid(sum_h2)
sum_o1 = self.w5 * h1 + self.w6 * h2 + self.b3
o1 = sigmoid(sum_o1)
y_pred = o1
d_l_d_pred = -2 * (y_true - y_pred)
d_pred_d_w5 = h1 * deriv_sigmoid(sum_o1)
d_pred_d_w6 = h2 * deriv_sigmoid(sum_o1)
d_pred_d_b3 = deriv_sigmoid(sum_o1)
d_ypred_d_h1 = self.w5 * deriv_sigmoid(sum_o1)
d_ypred_d_h2 = self.w6 * deriv_sigmoid(sum_o1)
d_h1_d_w1 = x[0] * deriv_sigmoid(sum_h1)
d_h1_d_w2 = x[1] * deriv_sigmoid(sum_h1)
d_h1_d_b1 = deriv_sigmoid(sum_h1)
d_h2_d_w3 = x[0] * deriv_sigmoid(sum_h2)
d_h2_d_w4 = x[1] * deriv_sigmoid(sum_h2)
d_h2_d_b2 = deriv_sigmoid(sum_h2)
self.w1 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_w1
self.w2 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_w2
self.b1 -= learn_rate * d_l_d_pred * d_ypred_d_h1 * d_h1_d_b1
self.w3 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_w3
self.w4 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_w4
self.b2 -= learn_rate * d_l_d_pred * d_ypred_d_h2 * d_h2_d_b2
self.w5 -= learn_rate * d_l_d_pred * d_pred_d_w5
self.w6 -= learn_rate * d_l_d_pred * d_pred_d_w6
self.b3 -= learn_rate * d_l_d_pred * d_pred_d_b3
if epoch % 10 == 0:
y_preds = np.array([self.feedforward(x) for x in data])
loss = mse_loss(all_y_trues, y_preds)
print(f"Epoch {epoch} loss: {loss:.3f}")
data = np.array([
[-2, -1],
[25, 6],
[17, 4],
[-15, -6]
])
all_y_trues = np.array([1, 0, 0, 1])
network = OurNeuralNetwork()
network.train(data, all_y_trues)
Please open Telegram to view this post
VIEW IN TELEGRAM
Завтра будет объяснение, а пока думайте🤯 🧠
def func(a, b=[]): b.append(a) return b print(func(1)) print(func(2)) print(func(3, [])) print(func(4))
def func(a, b=[]): b.append(a) return b print(func(1)) print(func(2)) print(func(3, [])) print(func(4))
Anonymous Quiz
10%
[1] [2] [3] [4]
60%
[1] [1, 2] [3] [1, 2, 4]
20%
[1] [2] [3] [4]
10%
[1] [2] [3] [3, 4]
🔵 Регрессия — важная часть машинного обучения. Она состоит из обучения алгоритма с помеченными данными и его использования для прогнозирования будущих (немаркированных) данных.🔵 Помеченные данные — это данные, поставляемые с метками, которые
в случае регрессии являются числами. Например, числа могут быть ценами на дома.🔵 В наборе данных признаки — это свойства, которые мы используем для прогнозирования метки. Так, если мы хотим спрогнозировать цены на
жилье, характеристики — это все, что описывает дом и что может определить цену, например размер, количество комнат, качество ближайшей школы, уровень преступности в районе, возраст дома и расстояние до шоссе.🔵 Метод линейной регрессии для прогнозирования состоит в присвоении веса каждому из признаков и суммировании весов, умноженных на соответствующие признаки, плюс смещение.🔵 Графически можно представить алгоритм линейной регрессии как попытку провести прямую как можно ближе к набору точек.🔵 Работа алгоритма линейной регрессии заключается в том, что он начинает со случайной прямой, а затем медленно приближает ее к каждой из неправильно классифицированных точек, пытаясь классифицировать
их правильно🔵 Полиномиальная регрессия — это общий случай линейной регрессии, в которой для моделирования данных мы используем кривые вместо прямых. Это особенно полезно, когда набор данных нелинейный.🔵 Регрессия имеет множество применений, включая системы рекомендаций, электронную коммерцию и здравоохранение
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем доброй ночи!
👨💻 Это все можно рассчитать с помощью пары формул, но мы делаем с помощью кода:
0⃣ 🗂 Библиотеки:
1⃣ 📊 Теперь наши данные, сделаем их в виде словаря:
2⃣ 🤯 Pandas мы импортировали не зря, преобразуем наш словарь в таблицу данных:
3⃣ 📊 Формула для прогноза цены у нас есть, сделаем ее в виде функции:
4⃣ ⚙️ Генерим предсказания:
🧑💻 Итак, тут поподробнее: берем df['Размер (s)'], эта часть строки выбирает столбец 'Размер (s)' из DataFrame df, который содержит информацию о размере каждого дома.
🧑💻 Другая часть строки — .apply(predict_price) применяет функцию predict_price к каждому значению в столбце 'Размер (s)'. Функция predict_price вычисляет прогнозируемую цену дома на основе формулы из условия.
🧑💻 df['Прогноз (p)'] = ... : Создает новый столбец 'Прогноз (p)' в DataFrame df и заполняет его значениями, полученными от применения функции predict_price
🧑💻 Если совсем просто, то мы создали новую переменную для прогнозов и теперь она в нашей таблице df DataFrame
5⃣ 🛍 Вычисляем MAE (средняя абсолютная)
6⃣ 📇 MSE (средняя квадратичная)
7⃣ 🧑💻 Остается визуал:
⚙️ Весь код:
*⃣ Вывод:
🧑💻 Средняя абсолютная погрешность (MAE): 38.0
🧑💻 Средняя квадратическая погрешность (MSE): 1550.0
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data = {
'Дом': [1, 2, 3, 4, 5],
'Размер (s)': [100, 200, 250, 325],
'Вознаграждение (r)': [200, 475, 400, 520, 735]
}df = pd.DataFrame(data)
def predict_price(size):
return 2 * size + 50
df['Прогноз (p)'] = df['Размер (s)'].apply(predict_price)
mae = np.mean(np.abs(df['Вознаграждение (r)'] - df['Прогноз (p)']))
print(f"Средняя абсолютная погрешность (MAE): {mae}")
mse = np.mean((df['Вознаграждение (r)'] - df['Прогноз (p)']) ** 2)
print(f"Средняя квадратическая погрешность (MSE): {mse}")
plt.figure(figsize=(10, 6))
plt.plot(df['Дом'], df['Вознаграждение (r)'], label='Фактические значения', marker='o')
plt.plot(df['Дом'], df['Прогноз (p)'], label='Прогнозы', marker='x')
plt.xlabel('Дом')
plt.ylabel('Цена')
plt.title('Фактические и прогнозируемые цены домов')
plt.legend()
plt.grid(True)
plt.show()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = {
'Дом': [1, 2, 3, 4, 5],
'Размер (s)': [100, 200, 200, 250, 325],
'Вознаграждение (r)': [200, 475, 400, 520, 735]
}
df = pd.DataFrame(data)
def predict_price(size):
return 2 * size + 50
df['Прогноз (p)'] = df['Размер (s)'].apply(predict_price)
df['Прогноз (p)'] = df['Размер (s)'].apply(predict_price)
#MAE
mae = np.mean(np.abs(df['Вознаграждение (r)'] - df['Прогноз (p)']))
print(f"Средняя абсолютная погрешность (MAE): {mae}")
#MSE
mse = np.mean((df['Вознаграждение (r)'] - df['Прогноз (p)']) ** 2)
print(f"Средняя квадратическая погрешность (MSE): {mse}")
plt.figure(figsize=(10, 6))
plt.plot(df['Дом'], df['Вознаграждение (r)'], label='Фактические значения', marker='o')
plt.plot(df['Дом'], df['Прогноз (p)'], label='Прогнозы', marker='x')
plt.xlabel('Дом')
plt.ylabel('Цена')
plt.title('Фактические и прогнозируемые цены домов')
plt.legend()
plt.grid(True)
plt.show()
print(df)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM