🧑💻 Бро, привет! ⁉️ Кто я такой? Я — такой же обычный человек, как и ты. Из базовых знаний у меня только Русский язык, но этого будет достаточно). Я люблю учиться, поэтому буду рад с тобой поделиться своими знаниями.
🔗 Этот канал — это, по сути, мои 'улучшенные' заметки. Тут я объясняю материал также, как я объясняю его себе — без лишних заморочек, просто и понятно.
⚙️ Даже если ты вообще ничего не понимаешь в теме, у меня есть удобная навигация, чтобы ты мог быстро найти нужное и разобраться с любым вопросом. Так что давай, бро, пора сворачивать горы!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2🤓2👨💻2❤1 1 1 1
⚙️ Как я уже сказал, этот канал — это мои заметки на стероидах. Я буквально разжевываю все темы, которые сам изучаю и выкладываю здесь, ровно поэтому у тебя не составит труда это понять.
⚙️ Этот канал абсолютно для всех. Тут уже собрана внушительная база по решениям заданий со Stepik'a, общая база по Python, огромные разборы тем по алгоритмам, даже есть разборы задач на C. Короче говоря, соскучиться тебе здесь не дам!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤2
📁 Проекты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1🤯1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🤯1🤓1👨💻1
🔬 Вот так выглядит формула для метода min-max normalization (каждый нормализированный элемент признака будет вычисляться по этой формуле)
▫️X — исходное значение признака.
▫️ X min — минимальное значение признака в выборке.
▫️X max — максимальное значение признака в выборке.
▫️X norm— нормализованное значение признака.
▫️X — исходное значение признака.
▫️ X min — минимальное значение признака в выборке.
▫️X max — максимальное значение признака в выборке.
▫️X norm— нормализованное значение признака.
Формула предполагает собой, что мы будем нормализовать данные в диапазон [0,1].
2❤🔥3👍3🥰2🤯1
Всем даров, начнем воркать и разберем такой код
⚙️ Разберем такой код:
🔗 Для начала, импортируем привычные нам библиотеки а также модуль MinMaxScaler()
⚙️ По итогу, мы применяем MinMaxScaler нормализацию и обучаем модель на этих данных.
⚙️ Вывод:
⚙️ Разберем такой код:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
🔗 Для начала, импортируем привычные нам библиотеки а также модуль MinMaxScaler()
raw_data = np.array([1., 3., 2., 4., 2., 10., 2., 5., 2., 2., 1., 7., 5., 2., 5., 16., 10., 3., 24.], dtype=np.float32) #датасет привычный
print('Сырой датасет: %s' % raw_data[:8])
transformed_data = MinMaxScaler().fit_transform(raw_data.reshape(-1, 1)).reshape(-1) # Обучаем модель + нормализуем данные
print('MIN-MAX scale датасет: %s' % transformed_data[:8])
⚙️ По итогу, мы применяем MinMaxScaler нормализацию и обучаем модель на этих данных.
⚙️ Вывод:
Сырой датасет: [ 1. 3. 2. 4. 2. 10. 2. 5.]
MIN-MAX scale датасет: [0. 0.08695652 0.04347826 0.13043478 0.04347826 0.39130437
0.04347826 0.17391305]
👍2🤯1🤓1👨💻1
⚙️ Еще один код для понимания того, как происходит нормализация:
⁉️ Кстати, мы применили reshape(-1, 1), что это вообще такое? В нашем случае мы применяем reshape(-1, 1), потому что на вход ожидается двумерный массив.
🔗 Вот еще пример:
⚙️ Здесь мы преобразуем одномерный массив в двумерный:
⁉️ Кстати, мы применили reshape(-1, 1), что это вообще такое? В нашем случае мы применяем reshape(-1, 1), потому что на вход ожидается двумерный массив.
Reshape в контексте машинного обучения — это процесс изменения формы массива без изменения его содержимого. Основная идея состоит в том, чтобы изменить многомерный массив в другую форму, сохраняя при этом общее количество элементов.
raw_data = np.array([1., 3., 2., 4., 2., 10., 2., 5., 2., 2., 1., 7., 5., 2., 5., 16., 10., 3., 24.], dtype=np.float32) #датасет привычный
print('Исходный датасет: %s' % raw_data)
from sklearn.preprocessing import MinMaxScaler
transformed_data = MinMaxScaler().fit_transform(raw_data.reshape(-1, 1))
transformed_data
🔗 Вот еще пример:
⚙️ Здесь мы преобразуем одномерный массив в двумерный:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)
print(reeshaped_arr)
🤯3👍1🥰1👨💻1👀1
П И Ш Е М К О Д
🧑💻⚙️ Нам нужно будет построить модель, вычислить метрику качества (MSE) для исходных, нормализованных и стандартизованных данных. Выполнить (Min-Max Scaling и Z-core), затем снова вычислить метрику качества и, если она выросла — применить найденную трансформацию ко входным данным перед тем, как подавать а вход модели.
🧑💻⚙️ Нам нужно будет построить модель, вычислить метрику качества (MSE) для исходных, нормализованных и стандартизованных данных. Выполнить (Min-Max Scaling и Z-core), затем снова вычислить метрику качества и, если она выросла — применить найденную трансформацию ко входным данным перед тем, как подавать а вход модели.
❤🔥2🤯1
0️⃣ Импортируем базовые библиотеки:
▫️numpy — для генерации данных
▫️matplotlib.pyplot — визуал
▫️sklearn.preprocessing (MinMaxScaler, StandardScaler) — для нормализации (в диапазон [0, 1]) и стандартизации (Z-core normalization, среднее — 0, стандартное отклонение — 1) , соответственно
▫️LinearRegression — модель линейной регрессии из sklearn.linear_model
▫️MSE — среднеквадратичная ошибка из sklearn.metrics
▫️numpy — для генерации данных
▫️matplotlib.pyplot — визуал
▫️sklearn.preprocessing (MinMaxScaler, StandardScaler) — для нормализации (в диапазон [0, 1]) и стандартизации (Z-core normalization, среднее — 0, стандартное отклонение — 1) , соответственно
▫️LinearRegression — модель линейной регрессии из sklearn.linear_model
▫️MSE — среднеквадратичная ошибка из sklearn.metrics
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
❤2🤯1
⚙️1️⃣ Дальше идет такая поебень, с которой я сидел щас разбирался:
⁉️ Что тут происходит?
Разберем первую строчку 🟰
⁉️ Почему 30 в скобках? — Да в целом без разницы, что там в скобках, хоть 1 поставьте. Число в скобках это стартовый ключ генератора, то есть, мы задаем начало последовательности и при повторном запуске числа будут идентичны.
⚙️ Идем дальше, строка — 🟰
⚙️ Последняя строка —🟰
np.random.seed(42)
X = 2 * np.random.randn(100, 1) + 3
y = 4 + 3 * X + np.random.randn(100, 1)
⁉️ Что тут происходит?
Разберем первую строчку 🟰
np.random.seed(30)🟰 — выражение означает, что генератор случайных чисел запускается и генерирует ту же последовательность чисел, что и раньше. ⁉️ Почему 30 в скобках? — Да в целом без разницы, что там в скобках, хоть 1 поставьте. Число в скобках это стартовый ключ генератора, то есть, мы задаем начало последовательности и при повторном запуске числа будут идентичны.
⚙️ Идем дальше, строка — 🟰
X = 2 * np.random.randn(100, 1) + 3🟰. Мы создаем массив из 100 элементов (матрица 100 × 1). Каждый элемент базировано распределен по стандартному распределению (среднее значение 0 и стандартное отклонение 1). 👨💻 Но, как вы видите, мы сначала умножаем на 2 (это стандартное отклонение), а затем, к каждому элементу прибавляем 3 — это смещает среднее значение распределения до 3, при этом сохраняя стандартное отклонение равным 2. ⚙️ Последняя строка —🟰
y = 4 + 3 * X + np.random.randn(100, 1)🟰 ‼️ Вот тут важный момент — мы умножаем каждый элемент вектора X на 3 и тут создается линейная зависимость между X и y. Также прибавляем 4 (сдвиг всех значений вверх на 4 единицы). В конце добавляем шум (просто случайное отклонение)❤1👍1🤯1
2️⃣ Друзья, добрый день! Воркаем дальше:
⚙️ Мы вчера написали и разобрали несколько строчек:
⚙️ Теперь выведем, что получается:
🔗 Пару моментов:
⁉️ Что делает flatten?
▫️Исходный массив: [[1, 2, 3], [4, 5, 6]] (форма (2, 3)) (массив просто рандомный, к нашему это не относится). После применения функции flatten массив будет [1, 2, 3, 4, 5, 6] (форма (6,))
▫️Я специально написал сначала flatten, потом reshape для понимания.
▫️А что касаемо нашего вывода (первые строки в начале поста):
⁉️⚙️ Что такое %s? Дак вот, оно заменяет местро в строке на строковое значение типа string. Вот возьмем наш случай: у нас %s подставляет значение переменной в строку.
⚙️ Мы вчера написали и разобрали несколько строчек:
np.random.seed(42)
X = 2 * np.random.randn(100, 1) + 3
y = 4 + 3 * X + np.random.randn(100, 1)
⚙️ Теперь выведем, что получается:
print('Исходный датасет X: %s' % X[:5].flatten()) # первые 5 элементов массива X, преобразованные в одномерный массив
print('Целевая переменная y: %s' % y[:5].reshape(-1, 1)) # первые 5 элементов массива y, преобразованные в двумерный массив (столбец)🔗 Пару моментов:
⁉️ Что делает flatten?
▫️Исходный массив: [[1, 2, 3], [4, 5, 6]] (форма (2, 3)) (массив просто рандомный, к нашему это не относится). После применения функции flatten массив будет [1, 2, 3, 4, 5, 6] (форма (6,))
▫️Я специально написал сначала flatten, потом reshape для понимания.
Flatten: Автоматически преобразует данные в одномерный вектор.
Reshape: Позволяет задать любую форму, но требует указания размеров.
import numpy as np
data = np.array([[1, 2, 3], [4, 5, 6]])
flattened = data.flatten() # [1, 2, 3, 4, 5, 6]
reshaped = data.reshape(6) # [1, 2, 3, 4, 5, 6]
▫️А что касаемо нашего вывода (первые строки в начале поста):
Исходный датасет X: [0.47189467 6.0558107 1.05857812 3.94111923 2.79860657]
Целевая переменная y: [[ 5.87071292]
[21.7874835 ]
[ 7.96166193]
[15.56482486]
[13.32796767]]
⁉️⚙️ Что такое %s? Дак вот, оно заменяет местро в строке на строковое значение типа string. Вот возьмем наш случай: у нас %s подставляет значение переменной в строку.
print('Исходный датасет X: %s' % X[:5].flatten())
print('Целевая переменная y: %s' % y[:5].reshape(-1, 1))❤1❤🔥1
⚙️ Дальше база: обучаем модель и вычисляем метрику качества (MSE) для исходных данных и y:
🔗 Вывод метрики качества MSE:
⁉️🔗 Что такое %.4f? Заменяет %.4f на значение переменной, округленное до 4 знаков после запятой.Вот пример:
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
mse = mean_squared_error(y, y_pred)
print('MSE для исходных данных: %.4f' %mse)
🔗 Вывод метрики качества MSE:
MSE для исходных данных: 0.9591
⁉️🔗 Что такое %.4f? Заменяет %.4f на значение переменной, округленное до 4 знаков после запятой.Вот пример:
name = "knownasgod"
age = 21
print("Имя: %s, Возраст: %d" % (name, age))
#Вывод: Имя: knownasgod, Возраст: 21
❤🔥2❤2🤯2
⚙️ Дальше применим Z-core стандартизацию к исходным данным:
⚙️ Обучаем модель линейной регрессии на стандартизированных данных:
⚙️ Вычисляем метрику качества для стандартизированных данных:
scaler_zcore = StandardScaler() #Тут создаем объект
X_zcore = scaler_zcore.fit_transform(X) # тут обучаем и трансформируем данные X
⚙️ Обучаем модель линейной регрессии на стандартизированных данных:
model_zcore = LinearRegression() # Создаем объект линейной регресии
model_zcore.fit(X, y) # обучаем модель на стандартизированных данных и y
y_pred_zcore = model_zcore.predict(X_zcore) # Затем предсказываем
⚙️ Вычисляем метрику качества для стандартизированных данных:
mse_zcore = mean_squared_error(y, y_pred_zcore)
print('MSE для стандартизованных данных (Z-core): %.4f' % mse_zcore)
❤🔥2👍1🤓1
⚙️ Применяем MinMaxScaling:
⚙️ Обучаем модель:
⚙️ Вычисляем метрику качества для нормализованных данных:
scaler_minmax = MinMaxScaler()
X_minmax = scaler_minmax.fit_transform(X)
⚙️ Обучаем модель:
model_minmax = LinearRegression()
model_minmax.fit(X_minmax, y)
y_pred_minmax = model_minmax.predict(X_minmax)
⚙️ Вычисляем метрику качества для нормализованных данных:
mse_minmax = mean_squared_error(y, y_pred_minmax)
print('MSE для нормализованных данных (Min-Max Scaling): %.4f' %mse_minmax)
❤1❤🔥1
CodeLab
П И Ш Е М К О Д 🧑💻⚙️ Нам нужно будет построить модель, вычислить метрику качества (MSE) для исходных, нормализованных и стандартизованных данных. Выполнить (Min-Max Scaling и Z-core), затем снова вычислить метрику качества и, если она выросла — применить…
⚙️ Теперь, как уже писалось вот здесь, нам нужно сравнить метрики качества для двух трансформаций данных.
⚙️ Дальше идет визуализация графиков один графиков для исходных данных с линейной регрессией, второй для нормализованных данных с линейной регрессией, третий для стандартизованных данных с линейной регрессией):
⚙️ Вывод:
if mse_minmax < mse:
print('Метрика качества улучшилась после Min-Max Scaling.')
else:
print('Метрика качества не улучшилась после Min-Max Scaling.')
if mse_zcore < mse:
print('Метрика качества улучшилось после Z-core (Standardization).')
else:
print('Метрика качества не улучшилось после Z-core (Standardization).')
⚙️ Дальше идет визуализация графиков один графиков для исходных данных с линейной регрессией, второй для нормализованных данных с линейной регрессией, третий для стандартизованных данных с линейной регрессией):
plt.figure(figsize=(18, 6))
plt.subplot(1, 3, 1)
plt.scatter(X, y, color='blue', label='Исходные данные')
plt.plot(X, y_pred, color='red', label='Линейная регрессия (исходные данные)')
plt.title('Исходные данные и линейная регрессия')
plt.xlabel('X')
plt.ylabel('y')
plt.grid(True)
plt.legend()
# Нормализованные данные (Min-Max Scaling) и линейная регрессия
plt.subplot(1, 3, 2)
plt.scatter(X_minmax, y, color='green', label='Нормализованные данные (Min-Max Scaling)')
plt.plot(X_minmax, y_pred_minmax, color='orange', label='Линейная регрессия (Min-Max Scaling)')
plt.title('Нормализованные данные (Min-Max Scaling) и линейная регрессия')
plt.xlabel('X (нормализованный)')
plt.ylabel('y')
plt.grid(True)
plt.legend()
# Стандартизованные данные (Z-core) и линейная регрессия
plt.subplot(1, 3, 3)
plt.scatter(X_zcore, y, color='purple', label='Стандартизованные данные (Z-core)')
plt.plot(X_zcore, y_pred_zcore, color='magenta', label='Линейная регрессия (Z-core)')
plt.title('Стандартизованные данные (Z-core) и линейная регрессия')
plt.xlabel('X (стандартизованный)')
plt.ylabel('y')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
⚙️ Вывод:
Исходный датасет X: [0.47189467 6.0558107 1.05857812 3.94111923 2.79860657]
Целевая переменная y: [[ 5.87071292]
[21.7874835 ]
[ 7.96166193]
[15.56482486]
[13.32796767]]
MSE для исходных данных: 0.9591
MSE для стандартизированных данных (Min-Max Scaling): 0.9591
MSE для нормализованных данных (Min-Max Scaling): 0.9591
Метрика качества улучшилась после Min-Max Scaling.
Метрика качества не улучшилось после Z-core (Standardization).
Telegram
CodeLab
П И Ш Е М К О Д
🧑💻⚙️ Нам нужно будет построить модель, вычислить метрику качества (MSE) для исходных, нормализованных и стандартизованных данных. Выполнить (Min-Max Scaling и Z-core), затем снова вычислить метрику качества и, если она выросла — применить…
🧑💻⚙️ Нам нужно будет построить модель, вычислить метрику качества (MSE) для исходных, нормализованных и стандартизованных данных. Выполнить (Min-Max Scaling и Z-core), затем снова вычислить метрику качества и, если она выросла — применить…
❤3