Независимые переменные (предикторы) — входные данные, от которых зависит результат обучения модели. Это параметры, которые мы контролируем или изменяем в процессе обучения модели, чтобы предсказать значение Целевой переменной (Target Variable).
Предположим, мы хотим предсказать цену дома на основе различных характеристик, таких как его площадь, количество спален и расположение. В данном случае площадь, количество спален и расположение будут независимыми переменными, а цена дома — зависимой переменной.
Выбор правильных независимых переменных имеет решающее значение для создания точной модели. Если мы выберем нерелевантные или избыточные переменные для обучения, это может привести к Переобучению (Overfitting), когда модель слишком хорошо запоминает данные, но не может обобщить их на новых примерах. Кроме того, качество и количество независимых переменных влияют на общую производительность модели.
Давайте рассмотрим пример и для демонстрации используем синтетические данные. Мы создадим набор данных, содержащий характеристики домов и соответствующие цены:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Создаем синтетические данные
# Размер (кв. м.), Количество спален, Цена (тыс. $)
data = {
'Size': [1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400],
'Bedrooms': [3, 3, 3, 4, 4, 4, 5, 5, 5, 6],
'Price': [300, 320, 340, 360, 380, 400, 420, 440, 460, 480]
}
# Преобразуем в DataFrame
df = pd.DataFrame(data)
# Печатаем данные
print(df)
Теперь разделим данные на обучающую и тестовую выборки:
# Определим независимые переменные (фичи)
X = df[['Size', 'Bedrooms']]
# Целевая переменная
y = df['Price']
# Разделяем данные на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Теперь мы создадим и обучим модель линейной регрессии:
# Создаем модель линейной регрессии
model = LinearRegression()
# Обучаем модель
model.fit(X_train, y_train)
# Получаем прогнозы
y_pred = model.predict(X_test)
# Отобразим прогнозы
print("Прогнозируемые значения:", y_pred)
Наконец, оценим производительность модели, используя среднеквадратическую ошибку (MSE):
# Оценка модели
mse = mean_squared_error(y_test, y_pred)
print("Среднеквадратическая ошибка:", mse)
Для наглядности можно построить график, показывающий прогнозы по сравнению с фактическими значениями:
plt.scatter(y_test, y_pred)
plt.xlabel('Фактические значения')
plt.ylabel('Прогнозируемые значения')
plt.title('Сравнение фактических и прогнозируемых значений')
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linewidth=2)
plt.show()
© Лена Капаца. Все права защищены.