CodeLab
145 subscribers
538 photos
20 videos
159 links
Говорим просто о сложном

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
🧑‍💻📈 Выполняем задание Тайлера Дердена: у нас даны точки x и значения в этих точках y. Нужно нормализовать y с помощью z-core и построить график зависимости нормализованных значений от x (для построения графика нужно использовать plt.scatter(x, y_transformed)).

🔗 Импортируем нашу базу (блок кода ниже — это наше ДАНО):

import numpy as np
from matplotlib import pyplot as plt
from sklearn.preprocessing import StadardScaler

x = np.linspace(1, 10, num = 10)
y = np.array(
[1., 3., 4., 2., 10., 5., 5., 2., 5., 10.]
)


🔗 Так ну че тут, создаем массив из 10 значений от 1 до 10. ‼️ Тут важный момент есть, ведь третьим аргументов мы указываем num = 10, что означает, что на интервале от 1 до 10 будет создано 10 точек. Если мы третий аргумент не ставим (он не обязательный кстати), то значений будет 50 (по умолчанию так).
❤‍🔥2🥰1
⚙️ Дальше мы все знаем, ребята мы не глупые, создаем объект нормализации (Z-core стандартизации):

scaler = StandardScaler()

y_transformed = scaler.fit_transform(y.reshape(-1, 1)).reshape(-1)


‼️ Кстати, интересный момент: в конце второй строки сверху пишем в конце reshape(-1). Первый reshape нам нужен в связи с тем, что нам нужен двумерный массив (так требует StandardScaler). ⁉️ Воот, а зачем нам второй reshape?

-1 означает, что NumPy сам определит размерность по этой оси на основе данных и указанного размера по другой оси (в данном случае — 1).


🔗 Вот так будет выглядеть вывод, если в конце не ставить reshape(-1)

y_transformed = scaler.fit_transform(y.reshape(-1, 1))

#Вывод:
array([[-1.24656167],
[-0.57274455],
[-0.23583599],
[-0.90965311],
[ 1.78561537],
[ 0.10107257],
[ 0.10107257],
[-0.90965311],
[ 0.10107257],
[ 1.78561537]])


⁉️ Отвечаю на вопрос, зачем нам 'второй' reshape(-1): После того как мы преобразовали одномерный массив в двумерный, мы делаем обратное дейтсвие (чтобы мы могли строить график).

Также вместо reshape(-1) мы можем использовать flatten()


📈 Остается построить график и готово:

plt.figure(figsize=(8, 6))
plt.scatter(x, y_transformed, color='blue', label='Нормализованные данные')
plt.title('График зависимости нормализованных значений от x')
plt.xlabel('x')
plt.ylabel('y (нормализованный)')
plt.grid(True)
plt.legend()
plt.show()
❤‍🔥1🥰1
🧑‍💻 Всем здарова, пишу на ночь глядя, но ничего, хотя бы начнем!

Мы не раз еще будем возвращаться к Линейной регрессии, но пора бы пойти дальше:

П О Л И Н О М И А Л Ь Н А Я Р Е Г Р Е С С И Я
2🤯2🤓1
🧑‍💻 Всем здарова, начинаем воркать!

Полиномиальная регрессия — это метод регрессионного анализа, который используется для моделирования нелинейных зависимостей между независимой переменной x и зависимой переменной y. В отличие от линейной регрессии, где зависимость моделируется прямой линией, полиномиальная регрессия использует полиномы (например, квадратичные, кубические или более высоких степеней) для описания данных.


⚙️ Для начала, попробуем тривиальное преобразование y = x, затем x² и x³. После преобразований, нарисуем график, представляющий собой сумму 0.1x + 2.5x² + 0.5x³ — сложим функции с разными коэффициентами, за работу!

from matplotlib import pyplot as plt
import numpy as np

x =np.linspace(-10, 10, num = 100)

y = x

plt.plot(x, y)
plt.show()


Получили тривиальную зависимость y = x

⚙️ Тривиальное преобразование y = x — это простейшая форма зависимости, где значение y напрямую равно значению x
🥰2👍1🤯1👨‍💻1
📈 Теперь парабола — это вторая степень (или квадратичная зависимость)

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-10, 10, num = 100)

y = x * x
plt.plot(x, y)
plt.show()


⚙️ Как вы заметили, y здесь не используется, можно его добавить и код будет выглядеть так:

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-10, 10, num=100)

y = x * x x^2

plt.plot(x, y)
plt.show()
🥰2❤‍🔥1👍1🤯1🤓1
⚙️ Третья степень, друзья, продолжаем воркать! 📈 На этот раз делаем гиперболу

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-10, 10, num = 100)

y = x * x * x
plt.plot(x, y)
plt.show()
🤯2❤‍🔥1👍1
⚙️ Теперь складываем все три функции и подставляем в формулу — эта + эта + эта

0.1x + 2.5x² + 0.5x³

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-10, 10, num = 100)

y = x * x * x
plt.plot(x, 0.5 * x * x * x + 2.5 * x * x + 0.1 * x)
plt.show()
❤‍🔥2🤯1
В конце декабря 2024 года китайцы тихонько выкатывают DeepSeek-V3. Сразу о ней пишут мало, но спустя пару недель люди начинают понимать, что это бомба замедленного действия.

Середина января 2025 года. Дональд Трамп легким движением руки подписывает указ о снятии всех ограничении на развитие искусственного интеллекта и на весь мир заявляет о вливании $500 млрд в развитие отечественных нейросетей.

Эхо от его речей быстро дошло до Поднебесной и спустя пару дней один из крупнейших банков Китая делает мощную денежную инъекцию ($140 млрд) в развитие местной передовой ИИ-системы.

27 января красный дракон нанес мощный удар по белоголовому орлу: успех DeepSeek спровоцировал обвал фондового рынка США на $1 трлн., а акции Nvidia таяли на глазах — Хуанг лишился $600 млрд.

В ночь с 27 на 28 января в битву вступил Alibaba со своей моделью Qwen2.5-VL — универсальный солдат, способный выполнять множество задач на приемлемом уровне.

Вечером 28 января инфополе заполнила еще одна нейрока QWEN-MAX от Alibaba, которая умеет все и на бенчмарках уничтожает даже DeepSeek.

Сэм Альтман в Твиттере написал, что его впечатлила DeepSeek, но «OpenAI, ОЧЕВИДНО, будет поставлять гораздо лучшие модели». Что ж, на словах он Лев Толстой.
❤‍🔥21
🧑‍💻⚙️ Друзья, добрый вечер! Нашел я для вас прикольный код, начнем же разбирать!

⚙️ Импортируем привычные библиотеки (почти):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score


🔗 Хорошо, половину мы уже знаем, разберем неизвестные:

📈 У нас что-то новенькое — функция для разделения данных на обучающую и тестовую выборки:

from sklearn.model_selection import train_test_split


⚙️ Следующая библиотека — как раз наша полиномиальная регрессия (библиотека ниже преобразует данные в полиномиальные признаки (квадраты кубы, их мы рассматривали на этих днях))

from sklearn.preprocessing import PolynomialFeatures


🔗 Еще импортируем метрику качества r2_score, но ее мы уже прошли:

from sklearn.metrics import r2_score
❤‍🔥21🤓1👀1
⚙️ Ща еще немного попишем и спать:

X = 6 * np.random.rand(200, 1) - 3
y = 0.8 * X**2 + 0.9 * X + 2 + np.random.randn(200, 1)


🔗 В X создаем массив из 200 случайных чисел от -3 до 3

🔗 y — зависимая переменная (также создаем двумерный массив 200 на 1)

plt.plot(X, y, 'b.')
plt.xlabel('X')
plt.ylabel('y')
plt.show()


завтра продолжим ... 💤
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3🤓1👀1
⚙️ Друзья, привет! Продолжаем воркать:

📱 Мы импортировали библиотеку для разделения данных на обучающую и тестовую выборки,

x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2)


🔗 Базово создаем модель линейной регрессии:

model = LinearRegression()
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
print(r2_score(y_test, y_pred))


📈 Ну и под конец выводим новый график:

plt.plot(x_train, model.predict(x_train), color = 'red')
plt.plot(X, y, 'b.')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤯1🤓1
📱📱 Друзья, нужен буст для канала, нам нужен лютейший визуал!

https://t.me/boost/pywithCodeLab
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🥰1🤡1🤓1👨‍💻1👀1
🥰211
📱Йоу, всем воссап, начинаем воркать!

🧑‍💻 Разберем сейчас небольшой код, а дальше будем прошлые посты доделывать.

👨‍💻Импортируем библиотеки:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures #Импортирует класс PolynomialFeatures; преобразование входных данных в полиномиальные признаки (возведение исходных признаков в разные степени)
from sklearn.linear_model import LinearRegression


📊 Дальше наши данные:

np.random.seed(0) #Начальное значение 
x = np.random.rand(100, 1) * 10 # массив x из 100 случайных чисел, равномерно распределенных в диапазоне от 0 до 1
y = 2.5 * x**2 - 3 * x + 5 + np.random.randn(100, 1) * 5 #Создает зависимость, добавляя случайный шум (нормальное распределение = 5


📈 Создаем полиномиальные признаки:

poly = PolynomialFeatures(degree=2)  # Степень полинома
x_poly = poly.fit(x) #Применяет преобразование к данным x, кароч теперь x_poly содержит полиномиальные обученные данные


📊 Обучаем нашу модель

model = LinearRegression()
model.fit(x_poly, y)


📁 Предсказываем данные

x_fit = np.arange(0, 10, 0.1).reshape(-1, 1)
x_fit_poly = poly.transform(x_fit)
y_fit = model.predict(x_fit_poly)


📊
Визуал

plt.scatter(x, y, color='blue', label='Данные')
plt.plot(x_fit, y_fit, color='red', label='Полиномиальная регрессия')
plt.title('Полиномиальная регрессия')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
2111
CodeLab
⚙️ Друзья, привет! Продолжаем воркать: 📱 Мы импортировали библиотеку для разделения данных на обучающую и тестовую выборки, x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2) 🔗 Базово создаем модель линейной регрессии:…
🖥 Так гайс, я немного изменил код, пора разбираться:

0⃣📱К библиотекам добавляем метрики качества: MAE, MSE, R²

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split #Разделение выборки
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error


1⃣📊 Нам нужны какие то данные, создадим два массива

X = 6 * np.random.rand(200, 1) - 3  
y = 0.8 * X**2 + 0.9 * X + 2 + np.random.randn(200, 1)


📊 Первый x — 200 случайный чисел в диапазоне от -3 до 3 , тут давайте поподробнее:

⚙️ Изначально функция np.random.rand(200, 1) создает массив из 200 случайных чисел в диапазоне [0, 1] — каждое число будет от 0 до 1

📇 Затем мы умножаем на 6 → минимальное значение становится равным 0, максимальное — 6 (умножаем на диапазон [0, 1]) → [0, 6]

Вычитаем 3 из каждого числа в диапазоне [0, 6] → получаем [-3, 3]

📂 Второй массив является квадратичной функцией

2⃣🖥 Дальше визуал:

plt.plot(X, y, 'b.') 
plt.xlabel('X')
plt.ylabel('y')
plt.title('Исходные данные')
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
32111
👨‍💻 Продолжаем воркать

3⃣📈 Воспользуемся функцией train_test_split из библиотеки sklearn.model_selection, чтобы разбить наши данные на 📎обучающую выборку📎 и 📎тестовую выборку📎

x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0.42) 


Так, че тут происходит? У нас есть X (признаки, фичи), есть целевая переменная y.

🔗 test_size определяет какая доля используется для тестовой выборки (для оценки качества будущей модели), а какая для обучающей выборки (для обучения модели)

🔗 Еще есть random_state = 0.42 (значение пох какое, можете хоть 1) — начальное значение для генератора случайных чисел — проще говоря, наши точки будут сгенерированы один раз и при последующем выводе мы увидим точно такие же точки. Мы как то уже использовали подобную функцию в Numpy — random.seed, а наша функция из библиотеки Sklearn.

4⃣📊 Дальше нам нужно преобразовать данные в полиномиальные признаки степени 2:

poly = PolynomialFeatures(degree=2, include_bias=False)


🔗 Преобразуем обучающие данные:

x_train_transformed = poly.fit_transform(x_train)


🔗 Тоже самое, только теперь тестовые данные:

x_test_transformed = poly.transform(x_test)
Please open Telegram to view this post
VIEW IN TELEGRAM
21111
📱 че стелит
Please open Telegram to view this post
VIEW IN TELEGRAM
42111
🧠 «Умнейший ИИ на Земле» выкатят уже завтра: Илон Маск объявил о релизе Grok 3 в своём X/Twitter.

Никакой цензуры 🔞
Please open Telegram to view this post
VIEW IN TELEGRAM
5111
📱📱 Друзья, нужен буст для канала, нам нужен лютейший визуал!

https://t.me/boost/pywithCodeLab
Please open Telegram to view this post
VIEW IN TELEGRAM
432
📱 Всем здарова, продолжаем воркать!

↗️ Первое, что касаемо этих двух строк ниже: почему мы во второй строке не применяем fit?

🔗 Потому что fit нужно вызывать только на обучающих данных, чтобы модель "научилась" на них. На тестовых данных мы применяем уже обученное преобразование (transform).

x_train_transformed = poly.fit_transform(x_train) # Обучается на тренировачных данных и сразу применяет преобразование ()

x_test_transformed = poly.transform(x_test) #


5⃣📊 Теперь продолжаем: строим модель Линейной регрессии и обучаем ее на преобразованных данных:

model = LinearRegression()
model.fit(x_train_transformed, y_train)


🧠 Ща вам объясню как это работает: x_train_transformed — это по сути наши преобразованные тренировочные данные (признаки X). Если вы вспомните, при создании объекта для генерации признаков Полиномиальной регрессии, мы поставили 2 степень, вот строчка:

poly = PolynomialFeatures(degree=2, include_bias=False) 


⚙️ После применения PolynomialFeatures(degree=2) к x_train данные выглядят как-то так:

[[1, 1], Первый столбец — исходные значения
[2, 4], Второй столбец — X² (Квадрат исходных значений)
[3, 9]]


📊 y_train — это целевые значения для тренировочных данных

📁 Подводим итог:

📇 modelfit(x_train_transformed, y_train) обучает модель на преобразованных тренировочных данных и находит зависимость между признаками (x_train_transformed) и целевой переменной (y_train), при этом, подбирая коэффициенты w₀, w₁, w₂

w₀ intercept (свободный член). это значение y, когда все признаки X, X² равны нулю, отвечает за смещение модели вдоль оси y, вверх или вниз

w₁ — коэффициент для X, показывает, как y изменяется при изменении X (отвечает за наклон, линейность зависимости)

w₂ коэффициент для X², показывает, как y изменяется при изменении X² (отвечает за кривизну (нелинейность зависимости)
Please open Telegram to view this post
VIEW IN TELEGRAM
4222111