🧑💻⚙️ Друзья, добрый вечер! Нашел я для вас прикольный код, начнем же разбирать!
⚙️ Импортируем привычные библиотеки (почти):
🔗 Хорошо, половину мы уже знаем, разберем неизвестные:
📈 У нас что-то новенькое — функция для разделения данных на обучающую и тестовую выборки:
⚙️ Следующая библиотека — как раз наша полиномиальная регрессия (библиотека ниже преобразует данные в полиномиальные признаки (квадраты кубы, их мы рассматривали на этих днях))
🔗 Еще импортируем метрику качества 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
Проголосуйте за канал, чтобы он получил больше возможностей.
x_train_transformed = poly.fit_transform(x_train) # Обучается на тренировачных данных и сразу применяет преобразование ()
x_test_transformed = poly.transform(x_test) #
model = LinearRegression()
model.fit(x_train_transformed, y_train)
poly = PolynomialFeatures(degree=2, include_bias=False)
[[1, 1], Первый столбец — исходные значения
[2, 4], Второй столбец — X² (Квадрат исходных значений)
[3, 9]]
w₀ — intercept (свободный член). это значение y, когда все признаки X, X² равны нулю, отвечает за смещение модели вдоль оси y, вверх или вниз
w₁ — коэффициент для X, показывает, как y изменяется при изменении X (отвечает за наклон, линейность зависимости)
w₂ — коэффициент для X², показывает, как y изменяется при изменении X² (отвечает за кривизну (нелинейность зависимости)
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
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
np.random.seed(42)
X = np.linspace(-3, 3, 100).reshape(-1, 1)
y = 0.5 * X**2 + X + 2 + np.random.normal(0, 1, (100, 1))
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
model = LinearRegression()
model.fit(X_poly, y)
y_pred = model.predict(X_poly)
r2 = r2_score(y, y_pred)
mae = mean_absolute_error(y, y_pred)
mse = mean_squared_error(y, y_pred)
rmse = np.sqrt(mse)
print(f"R²: {r2:.4f}")
print(f"MAE: {mae:.4f}")
print(f"MSE: {mse:.4f}")
print(f"RMSE: {rmse:.4f}")R²: 0.8657
MAE: 0.7167
MSE: 0.8118
RMSE: 0.9010
🔗 Сама метрика R² показывает, насколько хорошо модель объясняет дисперсию данных.
🔗 Учитывает квадраты ошибок, что делает её более чувствительной к выбросам
Please open Telegram to view this post
VIEW IN TELEGRAM
CodeLab
y_pred = model.predict(x_test_transformed)
r2 = r2_score(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred) # Средняя абсолютная ошибка
mse = mean_squared_error(y_test, y_pred) # Средняя квадратическая ошибка
plt.plot(X, y, 'b.')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Исходные данные')
plt.show()
print(f'R**2 score: {r2:.4f}')
print(f'MAE: {mae:.4f}')
print(f'MSE: {mse:.4f}')
plt.plot(x_test, y_test, 'b.', label = 'Тестовые данные')
plt.plot(x_test, y_pred, 'r.', label = 'Предсказанные значения')
plt.title('Реальные и предсказанные значения')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()
print("Коэффициенты модели:", model.coef_)
print('Свободный член (intercept):', model.intercept_)Визуализация предсказаний на новых данных
....
Продолжим завтра, я спать
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
np.random.seed(43)
X = 6 * np.random.rand(200, 1) - 3
y = 0.8 * X**2 + 0.9 * X + 2 + np.random.randn(200, 1)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)
poly = PolynomialFeatures(degree = 2, include_bias = False)
'''
fit (изучение) используется только на обучающих данных;
transform: Применяет преобразование; в тестовых данных
нам нужно просто применить transform, поскольку параметры
рассчитали выше
'''
x_train_transformed = poly.fit_transform(x_train)
x_test_transformed = poly.transform(x_test)
model = LinearRegression()
model.fit(x_train_transformed, y_train)
y_pred = model.predict(x_test_transformed)
r2 = r2_score(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred) # Средняя абсолютная ошибка
mse = mean_squared_error(y_test, y_pred) # Средняя квадратическая ошибка
plt.plot(X, y, 'b.')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Исходные данные')
plt.show()
print(f'R**2 score: {r2:.4f}')
print(f'MAE: {mae:.4f}')
print(f'MSE: {mse:.4f}')
plt.plot(x_test, y_test, 'b.', label = 'Тестовые данные')
plt.plot(x_test, y_pred, 'r.', label = 'Предсказанные значения')
plt.title('Реальные и предсказанные значения')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()
print("Коэффициенты модели:", model.coef_)
print('Свободный член (intercept):', model.intercept_)
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, полноценный пост будет завтра, сегодня попробую вам че нить написать интересное 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM