Независимая переменная (Independent Variable) - Лена Капаца
Независимая переменная (Independent Variable) by Лена Капаца Dec. 16, 2024 Основы

Независимые переменные (предикторы) — входные данные, от которых зависит результат обучения модели. Это параметры, которые мы контролируем или изменяем в процессе обучения модели, чтобы предсказать значение Целевой переменной (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()


© Лена Капаца. Все права защищены.