На практике гораздо
чаще применяются средняя абсолютная погрешность и средняя квадратиче-
ская погрешность. Они определяются аналогичным образом (тут речь про абсолютные и квадратические погрешности ), за исключени-
ем того, что вместо сумм мы вычисляем средние значения. Таким образом,
средняя абсолютная погрешность — это среднее значение вертикальных
расстояний от точек до прямой, а средняя квадратическая погрешность — это
среднее значение квадратов этих же расстояний.
❤2
🧑💻📈 Выполняем задание Тайлера Дердена: у нас даны точки x и значения в этих точках y. Нужно нормализовать y с помощью z-core и построить график зависимости нормализованных значений от x (для построения графика нужно использовать plt.scatter(x, y_transformed)).
🔗 Импортируем нашу базу (блок кода ниже — это наше ДАНО):
🔗 Так ну че тут, создаем массив из 10 значений от 1 до 10. ‼️ Тут важный момент есть, ведь третьим аргументов мы указываем num = 10, что означает, что на интервале от 1 до 10 будет создано 10 точек. Если мы третий аргумент не ставим (он не обязательный кстати), то значений будет 50 (по умолчанию так).
🔗 Импортируем нашу базу (блок кода ниже — это наше ДАНО):
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 стандартизации):
‼️ Кстати, интересный момент: в конце второй строки сверху пишем в конце reshape(-1). Первый reshape нам нужен в связи с тем, что нам нужен двумерный массив (так требует StandardScaler). ⁉️ Воот, а зачем нам второй reshape?
🔗 Вот так будет выглядеть вывод, если в конце не ставить reshape(-1)
⁉️ Отвечаю на вопрос, зачем нам 'второй' reshape(-1): После того как мы преобразовали одномерный массив в двумерный, мы делаем обратное дейтсвие (чтобы мы могли строить график).
📈 Остается построить график и готово:
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
🧑💻 Всем здарова, начинаем воркать!
⚙️ Для начала, попробуем тривиальное преобразование y = x, затем x² и x³. После преобразований, нарисуем график, представляющий собой сумму 0.1x + 2.5x² + 0.5x³ — сложим функции с разными коэффициентами, за работу!
✅ Получили тривиальную зависимость y = x
Полиномиальная регрессия — это метод регрессионного анализа, который используется для моделирования нелинейных зависимостей между независимой переменной 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
📈 Теперь парабола — это вторая степень (или квадратичная зависимость)
⚙️ Как вы заметили, y здесь не используется, можно его добавить и код будет выглядеть так:
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
В конце декабря 2024 года китайцы тихонько выкатывают DeepSeek-V3. Сразу о ней пишут мало, но спустя пару недель люди начинают понимать, что это бомба замедленного действия.
Середина января 2025 года. Дональд Трамп легким движением руки подписывает указ о снятии всех ограничении на развитие искусственного интеллекта и на весь мир заявляет о вливании $500 млрд в развитие отечественных нейросетей.
Эхо от его речей быстро дошло до Поднебесной и спустя пару дней один из крупнейших банков Китая делает мощную денежную инъекцию ($140 млрд) в развитие местной передовой ИИ-системы.
27 января красный дракон нанес мощный удар по белоголовому орлу: успех DeepSeek спровоцировал обвал фондового рынка США на $1 трлн., а акции Nvidia таяли на глазах — Хуанг лишился $600 млрд.
В ночь с 27 на 28 января в битву вступил Alibaba со своей моделью Qwen2.5-VL — универсальный солдат, способный выполнять множество задач на приемлемом уровне.
Вечером 28 января инфополе заполнила еще одна нейрока QWEN-MAX от Alibaba, которая умеет все и на бенчмарках уничтожает даже DeepSeek.
Сэм Альтман в Твиттере написал, что его впечатлила DeepSeek, но «OpenAI, ОЧЕВИДНО, будет поставлять гораздо лучшие модели». Что ж, на словах он Лев Толстой.
❤🔥2❤1
🧑💻⚙️ Друзья, добрый вечер! Нашел я для вас прикольный код, начнем же разбирать!
⚙️ Импортируем привычные библиотеки (почти):
🔗 Хорошо, половину мы уже знаем, разберем неизвестные:
📈 У нас что-то новенькое — функция для разделения данных на обучающую и тестовую выборки:
⚙️ Следующая библиотека — как раз наша полиномиальная регрессия (библиотека ниже преобразует данные в полиномиальные признаки (квадраты кубы, их мы рассматривали на этих днях))
🔗 Еще импортируем метрику качества r2_score, но ее мы уже прошли:
⚙️ Импортируем привычные библиотеки (почти):
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
❤🔥2❤1🤓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
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
CodeLab
Проголосуйте за канал, чтобы он получил больше возможностей.
❤🔥2🥰1🤡1🤓1👨💻1👀1
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
❤2 1 1 1
CodeLab
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
X = 6 * np.random.rand(200, 1) - 3
y = 0.8 * X**2 + 0.9 * X + 2 + np.random.randn(200, 1)
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
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0.42)
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
Никакой цензуры
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
CodeLab
Проголосуйте за канал, чтобы он получил больше возможностей.